ecore_evas_avoid_damage_set(ee, 0);
ecore_evas_avoid_damage_set(ee, 1);
}
- /* FIXME: to do... */
-/* if (ee->shaped) */
-/* _ecore_evas_x_resize_shape(ee); */
+/* if (ee->shaped) */
+/* _ecore_evas_win32_region_border_resize(ee); */
if ((ee->expecting_resize.w > 0) &&
(ee->expecting_resize.h > 0))
{
evas_output_size_set(ee->evas, ee->w, ee->h);
evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
}
- /* FIXME: damage and shape */
+ if (ee->prop.avoid_damage)
+ {
+ int pdam;
+ pdam = ecore_evas_avoid_damage_get(ee);
+ ecore_evas_avoid_damage_set(ee, 0);
+ ecore_evas_avoid_damage_set(ee, pdam);
+ }
+/* if ((ee->shaped) || (ee->alpha)) */
+/* _ecore_evas_win32_region_border_resize(ee); */
if (ee->func.fn_resize) ee->func.fn_resize(ee);
}
}
evas_output_size_set(ee->evas, ee->w, ee->h);
evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
}
- /* FIXME: damage and shape */
+ if (ee->prop.avoid_damage)
+ {
+ int pdam;
+
+ pdam = ecore_evas_avoid_damage_get(ee);
+ ecore_evas_avoid_damage_set(ee, 0);
+ ecore_evas_avoid_damage_set(ee, pdam);
+ }
+/* if ((ee->shaped) || (ee->alpha)) */
+/* _ecore_evas_win32_region_border_resize(ee); */
if (change_pos)
{
if (ee->func.fn_move) ee->func.fn_move(ee);
}
static void
+_ecore_evas_win32_shaped_set(Ecore_Evas *ee, int shaped)
+{
+ if (((ee->shaped) && (shaped)) || ((!ee->shaped) && (!shaped)))
+ return;
+
+ if (!strcmp(ee->driver, "software_ddraw")) return;
+
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_GDI
+ if (!strcmp(ee->driver, "software_gdi"))
+ {
+ Evas_Engine_Info_Software_Gdi *einfo;
+
+ einfo = (Evas_Engine_Info_Software_Gdi *)evas_engine_info_get(ee->evas);
+ ee->shaped = shaped;
+ if (einfo)
+ {
+ ee->engine.win32.state.region = ee->shaped;
+ einfo->info.region = ee->engine.win32.state.region;
+ if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo))
+ {
+ ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver);
+ }
+ if (ee->shaped)
+ evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+ }
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_GDI */
+ }
+}
+
+static void
_ecore_evas_win32_show(Ecore_Evas *ee)
{
INF("ecore evas show");
ee->prop.borderless = on;
ecore_win32_window_borderless_set((struct _Ecore_Win32_Window *)ee->prop.window,
ee->prop.borderless);
+
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_GDI
+ if (!strcmp(ee->driver, "software_gdi"))
+ {
+ Evas_Engine_Info_Software_Gdi *einfo;
+
+ einfo = (Evas_Engine_Info_Software_Gdi *)evas_engine_info_get(ee->evas);
+ if (einfo)
+ {
+ einfo->info.borderless = ee->prop.borderless;
+ if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo))
+ {
+ ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver);
+ }
+ if (ee->prop.borderless)
+ evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+ }
+ }
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_GDI */
}
static void
_ecore_evas_win32_resize,
_ecore_evas_win32_move_resize,
_ecore_evas_win32_rotation_set,
- NULL, /* _ecore_evas_x_shaped_set */
+ _ecore_evas_win32_shaped_set,
_ecore_evas_win32_show,
_ecore_evas_win32_hide,
_ecore_evas_win32_raise,
{
/* FIXME: REDRAW_DEBUG missing for now */
einfo->info.window = ((struct _Ecore_Win32_Window *)ee->prop.window)->window;
- einfo->info.mask = NULL;
einfo->info.depth = ecore_win32_screen_depth_get();
einfo->info.rotation = 0;
+ einfo->info.borderless = 0;
einfo->info.fullscreen = 0;
+ einfo->info.region = 0;
evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
}