Пример #1
0
EAPI void
ecore_x_region_combine(Ecore_X_Region dest,
                       Ecore_X_Region source1,
                       Ecore_X_Region source2)
{
#ifdef ECORE_XFIXES
   LOGFN(__FILE__, __LINE__, __FUNCTION__);
   XFixesUnionRegion(_ecore_x_disp, dest, source1, source2);
#endif /* ifdef ECORE_XFIXES */
} /* ecore_x_region_combine */
Пример #2
0
// Adds the region to the total damage for the workspace
void Workspace::addDamage( XserverRegion &region )
{
	if ( mDamage ) {
		XFixesUnionRegion( dpy, mDamage, mDamage, region );
		XFixesDestroyRegion( dpy, region );
	} else
		mDamage = region;

	region = None;
}
Пример #3
0
/*
 * Applies the current input shape base and stack to the stage input shape.
 * This function is for internal use only and should not be used outside of the
 * actual implementation of the input shape stack.
 */
static void
mnb_input_manager_apply_stack (void)
{
  Display       *xdpy;
  GList         *l;
  gint           i;
  XserverRegion  result;

  g_assert (mgr_singleton);

  xdpy = meta_plugin_get_xdisplay (mgr_singleton->plugin);

  if (mgr_singleton->current_region)
    XFixesDestroyRegion (xdpy, mgr_singleton->current_region);

  result = mgr_singleton->current_region = XFixesCreateRegion (xdpy, NULL, 0);

  for (i = 0; i <= MNB_INPUT_LAYER_TOP; ++i)
    {
      l = mgr_singleton->layers[i];

      if (!l)
        continue;

      while (l)
        {
          MnbInputRegion *mir = l->data;

          if (mir->inverse)
            XFixesSubtractRegion (xdpy, result, result, mir->region);
          else
            XFixesUnionRegion (xdpy, result, result, mir->region);

          l = l->next;
        }
    }

  meta_plugin_set_stage_input_region (mgr_singleton->plugin, result);
}