add new version of efl sync proto between comp and client.

SVN revision: 58220
This commit is contained in:
Carsten Haitzler 2011-03-31 08:13:14 +00:00
parent 71372d9c65
commit 4155a7df00
3 changed files with 46 additions and 14 deletions

View File

@ -3016,6 +3016,21 @@ _ecore_evas_x_flush_post(void *data, Evas *e __UNUSED__, void *event_info __UNUS
{
Ecore_Evas *ee = data;
if ((!ee->no_comp_sync) &&
(_ecore_evas_app_comp_sync))
{
if (ee->engine.x.sync_counter)
{
if (ee->engine.x.sync_began)
{
if (!ee->engine.x.sync_cancel)
{
ecore_x_e_comp_sync_draw_size_done_send
(ee->engine.x.win_root, ee->prop.window, ee->w, ee->h);
}
}
}
}
if (ee->engine.x.netwm_sync_set)
{
ecore_x_sync_counter_2_set(ee->engine.x.netwm_sync_counter,
@ -3023,19 +3038,6 @@ _ecore_evas_x_flush_post(void *data, Evas *e __UNUSED__, void *event_info __UNUS
ee->engine.x.netwm_sync_val_lo);
ee->engine.x.netwm_sync_set = 0;
}
if (ee->no_comp_sync) return;
if (!_ecore_evas_app_comp_sync) return;
if (ee->engine.x.sync_counter)
{
if (ee->engine.x.sync_began)
{
if (!ee->engine.x.sync_cancel)
{
ecore_x_e_comp_sync_draw_done_send(ee->engine.x.win_root,
ee->prop.window);
}
}
}
}
#endif

View File

@ -2219,6 +2219,11 @@ EAPI Ecore_X_Sync_Counter ecore_x_e_comp_sync_counter_get(
EAPI void ecore_x_e_comp_sync_draw_done_send(
Ecore_X_Window root,
Ecore_X_Window win);
EAPI void ecore_x_e_comp_sync_draw_size_done_send(
Ecore_X_Window root,
Ecore_X_Window win,
int w,
int h);
EAPI void ecore_x_e_comp_sync_supported_set(
Ecore_X_Window root,
Eina_Bool enabled);

View File

@ -800,7 +800,7 @@ ecore_x_e_comp_sync_draw_done_send(Ecore_X_Window root, Ecore_X_Window win)
xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
xev.xclient.format = 32;
xev.xclient.data.l[0] = win;
xev.xclient.data.l[1] = 0; // later
xev.xclient.data.l[1] = 0; // version
xev.xclient.data.l[2] = 0; // later
xev.xclient.data.l[3] = 0; // later
xev.xclient.data.l[4] = 0; // later
@ -810,6 +810,31 @@ ecore_x_e_comp_sync_draw_done_send(Ecore_X_Window root, Ecore_X_Window win)
&xev);
} /* ecore_x_e_comp_sync_draw_done_send */
EAPI void
ecore_x_e_comp_sync_draw_size_done_send(Ecore_X_Window root, Ecore_X_Window win, int w, int h)
{
XEvent xev;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (!root)
root = DefaultRootWindow(_ecore_x_disp);
xev.xclient.type = ClientMessage;
xev.xclient.display = _ecore_x_disp;
xev.xclient.window = win;
xev.xclient.message_type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
xev.xclient.format = 32;
xev.xclient.data.l[0] = win;
xev.xclient.data.l[1] = 1; // version
xev.xclient.data.l[2] = w; // win width at draw time
xev.xclient.data.l[3] = h; // win height at draw time
xev.xclient.data.l[4] = 0; // later
XSendEvent(_ecore_x_disp, root, False,
SubstructureRedirectMask | SubstructureNotifyMask,
&xev);
} /* ecore_x_e_comp_sync_draw_done_send */
EAPI void
ecore_x_e_comp_sync_supported_set(Ecore_X_Window root, Eina_Bool enabled)
{