ee = ecore_event_window_match(e->win);
if (!ee) return ECORE_CALLBACK_PASS_ON; /* pass on event */
if (e->win != ee->prop.window) return ECORE_CALLBACK_PASS_ON;
+ /* some GL drivers are doing buffer copy in a separate thread.
+ * we need to check whether GL driver sends SYNC_DRAW_DONE msg afger copying
+ * that are required in order to exactly render. - added by gl77.lee
+ */
+ if (ee->gl_sync_draw_done < 0)
+ {
+ if (getenv("ECORE_EVAS_GL_SYNC_DRAW_DONE"))
+ ee->gl_sync_draw_done = atoi(getenv("ECORE_EVAS_GL_SYNC_DRAW_DONE"));
+ else
+ ee->gl_sync_draw_done = 0;
+ }
if (first_map_bug < 0)
{
- if (getenv("ECORE_EVAS_GL_FIRST_MAP_BUG"))
- first_map_bug = atoi(getenv("ECORE_EVAS_GL_FIRST_MAP_BUG"));
+ char *bug = NULL;
+
+ if ((bug = getenv("ECORE_EVAS_GL_FIRST_MAP_BUG")))
+ first_map_bug = atoi(bug);
else
- first_map_bug = 0;
+ first_map_bug = 0;
}
- if ((first_map_bug) &&
- (!strcmp(ee->driver, "opengl_x11")))
- evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+ if ((first_map_bug) && (!strcmp(ee->driver, "opengl_x11")))
+ evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
if (ee->visible) return ECORE_CALLBACK_DONE;
// printf("SHOW EVENT %p\n", ee);
ee->visible = 1;
einfo = (Evas_Engine_Info_GL_X11 *)evas_engine_info_get(ee->evas);
if (!einfo) return;
einfo->info.rotation = rotation;
- _ecore_evas_x_rotation_set_internal
- (ee, rotation, resize, (Evas_Engine_Info *)einfo);
+ _ecore_evas_x_rotation_set_internal(ee, rotation, resize,
+ (Evas_Engine_Info *)einfo);
+# if _USE_WIN_ROT_EFFECT
- ecore_x_window_prop_property_set (ee->prop.window,
++ ecore_x_window_prop_property_set(ee->prop.window,
+ ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+ ECORE_X_ATOM_CARDINAL, 32, &angles, 2);
+# else
- ecore_x_window_prop_property_set (ee->prop.window,
++ ecore_x_window_prop_property_set(ee->prop.window,
+ ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+ ECORE_X_ATOM_CARDINAL, 32, &rotation, 1);
+# endif
#endif /* BUILD_ECORE_EVAS_OPENGL_X11 */
}
else if (!strcmp(ee->driver, "software_x11"))
einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
if (!einfo) return;
einfo->info.rotation = rotation;
- _ecore_evas_x_rotation_set_internal
- (ee, rotation, resize, (Evas_Engine_Info *)einfo);
+ _ecore_evas_x_rotation_set_internal(ee, rotation, resize,
+ (Evas_Engine_Info *)einfo);
+# if _USE_WIN_ROT_EFFECT
- ecore_x_window_prop_property_set (ee->prop.window,
++ ecore_x_window_prop_property_set(ee->prop.window,
+ ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+ ECORE_X_ATOM_CARDINAL, 32, &angles, 2);
+# else
- ecore_x_window_prop_property_set (ee->prop.window,
++ ecore_x_window_prop_property_set(ee->prop.window,
+ ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+ ECORE_X_ATOM_CARDINAL, 32, &rotation, 1);
+# endif
#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 */
}
else if (!strcmp(ee->driver, "software_16_x11"))
einfo = (Evas_Engine_Info_Software_16_X11 *)evas_engine_info_get(ee->evas);
if (!einfo) return;
einfo->info.rotation = rotation;
- _ecore_evas_x_rotation_set_internal
- (ee, rotation, resize, (Evas_Engine_Info *)einfo);
+ _ecore_evas_x_rotation_set_internal(ee, rotation, resize,
+ (Evas_Engine_Info *)einfo);
+# if _USE_WIN_ROT_EFFECT
- ecore_x_window_prop_property_set (ee->prop.window,
++ ecore_x_window_prop_property_set(ee->prop.window,
+ ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+ ECORE_X_ATOM_CARDINAL, 32, &angles, 2);
+# else
- ecore_x_window_prop_property_set (ee->prop.window,
++ ecore_x_window_prop_property_set(ee->prop.window,
+ ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+ ECORE_X_ATOM_CARDINAL, 32, &rotation, 1);
+# endif
#endif /* BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
}
else if (!strcmp(ee->driver, "software_8_x11"))
einfo = (Evas_Engine_Info_Software_8_X11 *)evas_engine_info_get(ee->evas);
if (!einfo) return;
einfo->info.rotation = rotation;
- _ecore_evas_x_rotation_set_internal
- (ee, rotation, resize, (Evas_Engine_Info *)einfo);
+ _ecore_evas_x_rotation_set_internal(ee, rotation, resize,
+ (Evas_Engine_Info *)einfo);
+# if _USE_WIN_ROT_EFFECT
- ecore_x_window_prop_property_set (ee->prop.window,
++ ecore_x_window_prop_property_set(ee->prop.window,
+ ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+ ECORE_X_ATOM_CARDINAL, 32, &angles, 2);
+# else
- ecore_x_window_prop_property_set (ee->prop.window,
++ ecore_x_window_prop_property_set(ee->prop.window,
+ ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE,
+ ECORE_X_ATOM_CARDINAL, 32, &rotation, 1);
+# endif
#endif /* BUILD_ECORE_EVAS_SOFTWARE_8_X11 */
}
+
+#if _USE_WIN_ROT_EFFECT
+ _ecore_evas_x_rotation_effect_setup();
+ _ecore_evas_x_flush_pre(ee, NULL, NULL);
+#endif /* end of _USE_WIN_ROT_EFFECT */
}
static void
{
Ecore_Evas *ee = data;
- if ((!ee->no_comp_sync) &&
- (_ecore_evas_app_comp_sync) &&
- if ((!ee->no_comp_sync) && (_ecore_evas_app_comp_sync))
++ if ((!ee->no_comp_sync) && (_ecore_evas_app_comp_sync) &&
+ (!ee->gl_sync_draw_done)) // added by gl77.lee
{
if (ee->engine.x.sync_counter)
{