gamnit: reset SpriteSet at create to support recreating the GPU context
authorAlexis Laferrière <alexis.laf@xymus.net>
Tue, 26 Sep 2017 17:36:30 +0000 (13:36 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Tue, 21 Nov 2017 18:06:14 +0000 (13:06 -0500)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/gamnit/flat/flat_core.nit

index e48b654..55da8e7 100644 (file)
@@ -459,6 +459,9 @@ redef class App
                        glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
                        glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
                end
+
+               sprites.reset
+               ui_sprites.reset
        end
 
        redef fun on_stop
@@ -1007,6 +1010,22 @@ class SpriteSet
                contexts_items.clear
                sprites_to_remap.clear
        end
+
+       private fun reset
+       do
+               for sprite in self do
+                       sprite.context = null
+               end
+
+               for c in contexts_items do c.destroy
+               contexts_map.clear
+               contexts_items.clear
+               sprites_to_remap.clear
+
+               for sprite in self do
+                       map_sprite sprite
+               end
+       end
 end
 
 # Context for calls to `glDrawElements`