From c48f6f454741655c6e5c10632931500a9e74f19f Mon Sep 17 00:00:00 2001 From: raster Date: Sun, 24 Jan 2010 11:01:39 +0000 Subject: [PATCH] use pre-post swap callbacks and expose for gl git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@45515 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/ecore_evas/Ecore_Evas.h | 3 ++- src/lib/ecore_evas/ecore_evas_x.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_evas/Ecore_Evas.h b/src/lib/ecore_evas/Ecore_Evas.h index be48537..94d0358 100644 --- a/src/lib/ecore_evas/Ecore_Evas.h +++ b/src/lib/ecore_evas/Ecore_Evas.h @@ -153,7 +153,8 @@ EAPI Ecore_X_Window ecore_evas_gl_x11_window_get(const Ecore_Evas *ee); EAPI void ecore_evas_gl_x11_direct_resize_set(Ecore_Evas *ee, int on); EAPI int ecore_evas_gl_x11_direct_resize_get(const Ecore_Evas *ee); EAPI void ecore_evas_gl_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win); - +EAPI void ecore_evas_gl_x11_pre_post_swap_callback_set(const Ecore_Evas *ee, void *data, void (*pre_cb) (void *data, Evas *e), void (*post_cb) (void *data, Evas *e)); + EAPI Ecore_Evas *ecore_evas_xrender_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h); EAPI Ecore_X_Window ecore_evas_xrender_x11_window_get(const Ecore_Evas *ee); EAPI void ecore_evas_xrender_x11_direct_resize_set(Ecore_Evas *ee, int on); diff --git a/src/lib/ecore_evas/ecore_evas_x.c b/src/lib/ecore_evas/ecore_evas_x.c index b896c4e..d640d9f 100644 --- a/src/lib/ecore_evas/ecore_evas_x.c +++ b/src/lib/ecore_evas/ecore_evas_x.c @@ -124,6 +124,7 @@ _ecore_evas_x_gl_window_new(Ecore_Evas *ee, Ecore_X_Window parent, int x, int y, einfo->info.colormap = einfo->func.best_colormap_get(ecore_x_display_get(), screen); einfo->info.drawable = win; einfo->info.depth = einfo->func.best_depth_get(ecore_x_display_get(), screen); + evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo); ecore_x_window_defaults_set(win); } @@ -2743,6 +2744,36 @@ ecore_evas_gl_x11_extra_event_window_add(Ecore_Evas *ee __UNUSED__, Ecore_X_Wind * * FIXME: To be fixed. */ +#ifdef BUILD_ECORE_EVAS_OPENGL_X11 +EAPI void +ecore_evas_gl_x11_pre_post_swap_callback_set(const Ecore_Evas *ee, void *data, void (*pre_cb) (void *data, Evas *e), void (*post_cb) (void *data, Evas *e)) +{ + Evas_Engine_Info_GL_X11 *einfo; + + if (!(!strcmp(ee->driver, "opengl_x11"))) return; + + einfo = (Evas_Engine_Info_GL_X11 *)evas_engine_info_get(ee->evas); + if (einfo) + { + einfo->callback.pre_swap = pre_cb; + einfo->callback.pre_swap = post_cb; + einfo->callback.data = data; + evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo); + } +} +#else +EAPI void +ecore_evas_gl_x11_pre_post_swap_callback_set(const Ecore_Evas *ee, void *data, void (*pre_cb) (void *data, Evas *e), void (*post_cb) (void *data, Evas *e)) +{ + return; +} +#endif /* ! BUILD_ECORE_EVAS_OPENGL_X11 */ + +/** + * To be documented. + * + * FIXME: To be fixed. + */ #if defined (BUILD_ECORE_EVAS_XRENDER_X11) || defined (BUILD_ECORE_EVAS_XRENDER_XCB) EAPI Ecore_Evas * ecore_evas_xrender_x11_new(const char *disp_name, Ecore_X_Window parent, -- 2.7.4