summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2013-12-01 13:26:04 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2013-12-01 13:26:04 +0900
commit2512eaf15712c6bc818fff76a38d8d21ea5754e0 (patch)
tree04e7d4260b0301dc49c333915f7740440e7fffae
parent970bcc64d80ef17a4fcfe028aa5aa57f87acd847 (diff)
evas event freezing is "wrong" for core events - turn it off
this turns off event freezing for SOME event types for eveas canvas events (was was intended to begin with). this fixes T577
-rw-r--r--src/lib/evas/canvas/evas_render.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c
index 926e447160..b12af6b99b 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -1593,6 +1593,17 @@ _drop_image_cache_ref(const void *container EINA_UNUSED, void *data, void *fdata
1593 return EINA_TRUE; 1593 return EINA_TRUE;
1594} 1594}
1595 1595
1596static void
1597_cb_always_call(Evas *eo_e, Evas_Callback_Type type, void *event_info)
1598{
1599 int freeze_num = 0, i;
1600
1601 eo_do(eo_e, eo_event_freeze_get(&freeze_num));
1602 for (i = 0; i < freeze_num; i++) eo_do(eo_e, eo_event_thaw());
1603 evas_event_callback_call(eo_e, type, event_info);
1604 for (i = 0; i < freeze_num; i++) eo_do(eo_e, eo_event_freeze());
1605}
1606
1596static Eina_Bool 1607static Eina_Bool
1597evas_render_updates_internal(Evas *eo_e, 1608evas_render_updates_internal(Evas *eo_e,
1598 unsigned char make_updates, 1609 unsigned char make_updates,
@@ -1648,7 +1659,7 @@ evas_render_updates_internal(Evas *eo_e,
1648 1659
1649 RD("[--- RENDER EVAS (size: %ix%i)\n", e->viewport.w, e->viewport.h); 1660 RD("[--- RENDER EVAS (size: %ix%i)\n", e->viewport.w, e->viewport.h);
1650 1661
1651 evas_event_callback_call(eo_e, EVAS_CALLBACK_RENDER_PRE, NULL); 1662 _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_PRE, NULL);
1652 1663
1653 /* Check if the modified object mean recalculating every thing */ 1664 /* Check if the modified object mean recalculating every thing */
1654 if (!e->invalidate) 1665 if (!e->invalidate)
@@ -1985,10 +1996,10 @@ evas_render_updates_internal(Evas *eo_e,
1985 { 1996 {
1986 _evas_object_image_video_overlay_do(eo_obj); 1997 _evas_object_image_video_overlay_do(eo_obj);
1987 } 1998 }
1988 evas_event_callback_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_PRE, NULL); 1999 _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_PRE, NULL);
1989 e->engine.func->output_flush(e->engine.data.output, 2000 e->engine.func->output_flush(e->engine.data.output,
1990 EVAS_RENDER_MODE_SYNC); 2001 EVAS_RENDER_MODE_SYNC);
1991 evas_event_callback_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_POST, NULL); 2002 _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_POST, NULL);
1992 } 2003 }
1993 } 2004 }
1994 2005
@@ -2121,7 +2132,7 @@ evas_render_updates_internal(Evas *eo_e,
2121 Evas_Event_Render_Post post; 2132 Evas_Event_Render_Post post;
2122 2133
2123 post.updated_area = e->render.updates; 2134 post.updated_area = e->render.updates;
2124 evas_event_callback_call(eo_e, EVAS_CALLBACK_RENDER_POST, e->render.updates ? &post : NULL); 2135 _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_POST, e->render.updates ? &post : NULL);
2125 } 2136 }
2126 2137
2127 RD("---]\n"); 2138 RD("---]\n");
@@ -2180,10 +2191,10 @@ evas_render_wakeup(Evas *eo_e)
2180 { 2191 {
2181 _evas_object_image_video_overlay_do(eo_obj); 2192 _evas_object_image_video_overlay_do(eo_obj);
2182 } 2193 }
2183 evas_event_callback_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_PRE, NULL); 2194 _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_PRE, NULL);
2184 e->engine.func->output_flush(e->engine.data.output, 2195 e->engine.func->output_flush(e->engine.data.output,
2185 EVAS_RENDER_MODE_ASYNC_END); 2196 EVAS_RENDER_MODE_ASYNC_END);
2186 evas_event_callback_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_POST, NULL); 2197 _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_POST, NULL);
2187 } 2198 }
2188 2199
2189 /* clear redraws */ 2200 /* clear redraws */
@@ -2208,7 +2219,7 @@ evas_render_wakeup(Evas *eo_e)
2208 e->rendering = EINA_FALSE; 2219 e->rendering = EINA_FALSE;
2209 2220
2210 post.updated_area = ret_updates; 2221 post.updated_area = ret_updates;
2211 evas_event_callback_call(eo_e, EVAS_CALLBACK_RENDER_POST, &post); 2222 _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_POST, &post);
2212 2223
2213 evas_render_updates_free(ret_updates); 2224 evas_render_updates_free(ret_updates);
2214 2225