fix some sync send issues - missed cases.

SVN revision: 47411
This commit is contained in:
Carsten Haitzler 2010-03-24 08:08:46 +00:00
parent 22d6a15d3b
commit 116a275b8a
2 changed files with 36 additions and 22 deletions

View File

@ -795,10 +795,10 @@ _e_mod_comp_cb_update(E_Comp *c)
{ {
printf("nosync\n"); printf("nosync\n");
if (cw->bd) if (cw->bd)
{ ecore_x_e_comp_sync_cancel_send(cw->bd->client.win);
ecore_x_e_comp_sync_cancel_send(cw->bd->client.win); else
ecore_x_sync_counter_inc(cw->counter, 1); ecore_x_e_comp_sync_cancel_send(cw->win);
} ecore_x_sync_counter_inc(cw->counter, 1);
} }
// ecore_x_window_hide(cw->win); // ecore_x_window_hide(cw->win);
// ecore_x_window_show(cw->win); // ecore_x_window_show(cw->win);
@ -863,6 +863,8 @@ _e_mod_comp_cb_update(E_Comp *c)
{ {
if (cw->bd) if (cw->bd)
ecore_x_e_comp_sync_begin_send(cw->bd->client.win); ecore_x_e_comp_sync_begin_send(cw->bd->client.win);
else
ecore_x_e_comp_sync_begin_send(cw->win);
} }
} }
} }
@ -1002,7 +1004,10 @@ _e_mod_comp_object_del(void *data, void *obj)
{ {
if (cw->counter) if (cw->counter)
{ {
ecore_x_e_comp_sync_cancel_send(cw->bd->client.win); if (cw->bd)
ecore_x_e_comp_sync_cancel_send(cw->bd->client.win);
else
ecore_x_e_comp_sync_cancel_send(cw->win);
ecore_x_sync_counter_inc(cw->counter, 1); ecore_x_sync_counter_inc(cw->counter, 1);
} }
eina_hash_del(borders, e_util_winid_str_get(cw->bd->client.win), cw); eina_hash_del(borders, e_util_winid_str_get(cw->bd->client.win), cw);
@ -1019,6 +1024,28 @@ _e_mod_comp_object_del(void *data, void *obj)
} }
} }
static void
_e_mod_comp_win_sync_setup(E_Comp_Win *cw, Ecore_X_Window win)
{
if (!_comp_mod->conf->efl_sync) return;
if (cw->bd)
{
if (_e_mod_comp_win_is_borderless(cw) ||
(_comp_mod->conf->loose_sync))
cw->counter = ecore_x_e_comp_sync_counter_get(win);
else
ecore_x_e_comp_sync_cancel_send(win);
}
else
cw->counter = ecore_x_e_comp_sync_counter_get(win);
if (cw->counter)
{
ecore_x_sync_counter_inc(cw->counter, 1);
ecore_x_e_comp_sync_begin_send(win);
}
}
static E_Comp_Win * static E_Comp_Win *
_e_mod_comp_win_add(E_Comp *c, Ecore_X_Window win) _e_mod_comp_win_add(E_Comp *c, Ecore_X_Window win)
{ {
@ -1036,22 +1063,7 @@ _e_mod_comp_win_add(E_Comp *c, Ecore_X_Window win)
eina_hash_add(borders, e_util_winid_str_get(cw->bd->client.win), cw); eina_hash_add(borders, e_util_winid_str_get(cw->bd->client.win), cw);
cw->dfn = e_object_delfn_add(E_OBJECT(cw->bd), cw->dfn = e_object_delfn_add(E_OBJECT(cw->bd),
_e_mod_comp_object_del, cw); _e_mod_comp_object_del, cw);
if (_comp_mod->conf->efl_sync) _e_mod_comp_win_sync_setup(cw, cw->bd->client.win);
{
if (_e_mod_comp_win_is_borderless(cw) ||
(_comp_mod->conf->loose_sync))
{
cw->counter =
ecore_x_e_comp_sync_counter_get(cw->bd->client.win);
if (cw->counter)
{
ecore_x_sync_counter_inc(cw->counter, 1);
ecore_x_e_comp_sync_begin_send(cw->bd->client.win);
}
}
else
ecore_x_e_comp_sync_cancel_send(cw->bd->client.win);
}
} }
else else
{ {
@ -1066,6 +1078,7 @@ _e_mod_comp_win_add(E_Comp *c, Ecore_X_Window win)
cw->dfn = e_object_delfn_add(E_OBJECT(cw->menu), cw->dfn = e_object_delfn_add(E_OBJECT(cw->menu),
_e_mod_comp_object_del, cw); _e_mod_comp_object_del, cw);
} }
_e_mod_comp_win_sync_setup(cw, cw->win);
} }
// fixme: could use bd/pop/menu for this too // fixme: could use bd/pop/menu for this too
memset((&att), 0, sizeof(Ecore_X_Window_Attributes)); memset((&att), 0, sizeof(Ecore_X_Window_Attributes));

View File

@ -109,7 +109,8 @@ e_modapi_init(E_Module *m)
// init_done_handler = ecore_event_handler_add(E_EVENT_INIT_DONE, // init_done_handler = ecore_event_handler_add(E_EVENT_INIT_DONE,
// _e_init_done, NULL); // _e_init_done, NULL);
// } // }
e_module_priority_set(m, -1000);
return mod; return mod;
} }