+void eWidgetDesktop::invalidateWidgetLayer(const gRegion ®ion, const eWidget *widget, int layer)
+{
+ if (m_comp_mode == cmImmediate)
+ {
+ invalidate(region);
+ return;
+ }
+ eWidgetDesktopCompBuffer *comp = widget->m_comp_buffer[layer];
+ if (comp)
+ comp->m_dirty_region |= region;
+}
+
+void eWidgetDesktop::invalidateWidget(const gRegion ®ion, const eWidget *widget, int layer)
+{
+ if (m_comp_mode == cmImmediate)
+ {
+ invalidate(region);
+ return;
+ }
+
+ if (!(widget->m_vis & eWidget::wVisShow))
+ return;
+
+ gRegion mregion = region;
+ if (layer == -1)
+ for (int layer = 0; layer < MAX_LAYER; ++layer)
+ invalidateWidgetLayer(mregion, widget, layer);
+ else
+ invalidateWidgetLayer(mregion, widget, layer);
+}
+
+void eWidgetDesktop::invalidate(const gRegion ®ion, const eWidget *widget, int layer)