evas: do not loose tile size when resizing output.
authorCedric BAIL <cedric@osg.samsung.com>
Fri, 25 Aug 2017 17:47:56 +0000 (10:47 -0700)
committerCedric BAIL <cedric@osg.samsung.com>
Fri, 25 Aug 2017 17:47:56 +0000 (10:47 -0700)
src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h
src/modules/evas/engines/software_generic/evas_engine.c

index 5db2a94..01751a2 100644 (file)
@@ -71,6 +71,10 @@ struct _Render_Output_Software_Generic
 
    unsigned int w, h;
 
+   struct {
+      unsigned int w, h;
+   } tile;
+
    Render_Engine_Swap_Mode swap_mode;
    Render_Engine_Merge_Mode merge_mode;
 
@@ -125,11 +129,13 @@ evas_render_engine_software_generic_init(Render_Output_Software_Generic *re,
    re->lost_back = 0;
    re->tile_strict = 0;
 
+   re->tile.w = TILESIZE;
+   re->tile.h = TILESIZE;
    re->tb = evas_common_tilebuf_new(w, h);
    if (!re->tb) return EINA_FALSE;
 
    /* in preliminary tests 16x16 gave highest framerates */
-   evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+   evas_common_tilebuf_set_tile_size(re->tb, re->tile.w, re->tile.h);
 
    return EINA_TRUE;
 }
@@ -175,7 +181,7 @@ evas_render_engine_software_generic_update(Render_Output_Software_Generic *re,
    evas_common_tilebuf_free(re->tb);
    re->tb = evas_common_tilebuf_new(w, h);
    if (!re->tb) return EINA_FALSE;
-   evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+   evas_common_tilebuf_set_tile_size(re->tb, re->tile.w, re->tile.h);
    evas_render_engine_software_generic_tile_strict_set(re, re->tile_strict);
    return EINA_TRUE;
 }
index 4362d2d..a97e14a 100644 (file)
@@ -3922,6 +3922,8 @@ eng_output_tile_size_set(void *engine EINA_UNUSED, void *data, int w, int h)
    Render_Output_Software_Generic *re;
 
    re = (Render_Output_Software_Generic *)data;
+   re->tile.w = w;
+   re->tile.h = h;
    evas_common_tilebuf_set_tile_size(re->tb, w, h);
 }