only need to avoid exposures when we're shaped

SVN revision: 75071
This commit is contained in:
Mike Blumenkrantz 2012-08-10 08:41:10 +00:00
parent 0037cc3f7d
commit ef46a62d14
1 changed files with 37 additions and 35 deletions

View File

@ -362,42 +362,44 @@ _ecore_evas_x_render(Ecore_Evas *ee)
} }
if (ee->engine.x.damages) if (ee->engine.x.damages)
{ {
/* if we have a damage pixmap - we can avoid exposures by
* disabling them just for setting the mask */
ecore_x_event_mask_set(ee->prop.window,
ECORE_X_EVENT_MASK_KEY_DOWN |
ECORE_X_EVENT_MASK_KEY_UP |
ECORE_X_EVENT_MASK_MOUSE_DOWN |
ECORE_X_EVENT_MASK_MOUSE_UP |
ECORE_X_EVENT_MASK_MOUSE_IN |
ECORE_X_EVENT_MASK_MOUSE_OUT |
ECORE_X_EVENT_MASK_MOUSE_MOVE |
// ECORE_X_EVENT_MASK_WINDOW_DAMAGE |
ECORE_X_EVENT_MASK_WINDOW_VISIBILITY |
ECORE_X_EVENT_MASK_WINDOW_CONFIGURE |
ECORE_X_EVENT_MASK_WINDOW_FOCUS_CHANGE |
ECORE_X_EVENT_MASK_WINDOW_PROPERTY |
ECORE_X_EVENT_MASK_WINDOW_COLORMAP
);
if (ee->shaped) if (ee->shaped)
ecore_x_window_shape_mask_set(ee->prop.window, {
ee->engine.x.mask); /* if we have a damage pixmap - we can avoid exposures by
/* and re-enable them again */ * disabling them just for setting the mask */
ecore_x_event_mask_set(ee->prop.window, ecore_x_event_mask_set(ee->prop.window,
ECORE_X_EVENT_MASK_KEY_DOWN | ECORE_X_EVENT_MASK_KEY_DOWN |
ECORE_X_EVENT_MASK_KEY_UP | ECORE_X_EVENT_MASK_KEY_UP |
ECORE_X_EVENT_MASK_MOUSE_DOWN | ECORE_X_EVENT_MASK_MOUSE_DOWN |
ECORE_X_EVENT_MASK_MOUSE_UP | ECORE_X_EVENT_MASK_MOUSE_UP |
ECORE_X_EVENT_MASK_MOUSE_IN | ECORE_X_EVENT_MASK_MOUSE_IN |
ECORE_X_EVENT_MASK_MOUSE_OUT | ECORE_X_EVENT_MASK_MOUSE_OUT |
ECORE_X_EVENT_MASK_MOUSE_MOVE | ECORE_X_EVENT_MASK_MOUSE_MOVE |
ECORE_X_EVENT_MASK_WINDOW_DAMAGE | //ECORE_X_EVENT_MASK_WINDOW_DAMAGE |
ECORE_X_EVENT_MASK_WINDOW_VISIBILITY | ECORE_X_EVENT_MASK_WINDOW_VISIBILITY |
ECORE_X_EVENT_MASK_WINDOW_CONFIGURE | ECORE_X_EVENT_MASK_WINDOW_CONFIGURE |
ECORE_X_EVENT_MASK_WINDOW_FOCUS_CHANGE | ECORE_X_EVENT_MASK_WINDOW_FOCUS_CHANGE |
ECORE_X_EVENT_MASK_WINDOW_PROPERTY | ECORE_X_EVENT_MASK_WINDOW_PROPERTY |
ECORE_X_EVENT_MASK_WINDOW_COLORMAP ECORE_X_EVENT_MASK_WINDOW_COLORMAP
); );
ecore_x_window_shape_mask_set(ee->prop.window,
ee->engine.x.mask);
/* and re-enable them again */
ecore_x_event_mask_set(ee->prop.window,
ECORE_X_EVENT_MASK_KEY_DOWN |
ECORE_X_EVENT_MASK_KEY_UP |
ECORE_X_EVENT_MASK_MOUSE_DOWN |
ECORE_X_EVENT_MASK_MOUSE_UP |
ECORE_X_EVENT_MASK_MOUSE_IN |
ECORE_X_EVENT_MASK_MOUSE_OUT |
ECORE_X_EVENT_MASK_MOUSE_MOVE |
ECORE_X_EVENT_MASK_WINDOW_DAMAGE |
ECORE_X_EVENT_MASK_WINDOW_VISIBILITY |
ECORE_X_EVENT_MASK_WINDOW_CONFIGURE |
ECORE_X_EVENT_MASK_WINDOW_FOCUS_CHANGE |
ECORE_X_EVENT_MASK_WINDOW_PROPERTY |
ECORE_X_EVENT_MASK_WINDOW_COLORMAP
);
}
ecore_x_xregion_set(ee->engine.x.damages, ee->engine.x.gc); ecore_x_xregion_set(ee->engine.x.damages, ee->engine.x.gc);
ecore_x_pixmap_paste(ee->engine.x.pmap, ee->prop.window, ecore_x_pixmap_paste(ee->engine.x.pmap, ee->prop.window,
ee->engine.x.gc, 0, 0, ee->w, ee->h, ee->engine.x.gc, 0, 0, ee->w, ee->h,