From 199fb20fe4eafacaf8d71473a472cd3739a283f0 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Tue, 18 Feb 2014 17:52:16 +0900 Subject: [PATCH] ecore-evas - sdl module - limit to 1 window at a time this should fix T693 and only allow 1 sdl window at any one time iwht the sdl ecore-evas engine/module. it's simply invalid to use more than one window with it. --- .../ecore_evas/engines/sdl/ecore_evas_sdl.c | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c b/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c index ede7872317..33da51882b 100644 --- a/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c +++ b/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c @@ -35,8 +35,9 @@ static Ecore_Event_Handler *ecore_evas_event_handlers[4] = { }; static const char *ecore_evas_sdl_default = "EFL SDL"; -static int _ecore_evas_fps_debug = 0; static Ecore_Poller *ecore_evas_event; +static int _ecore_evas_fps_debug = 0; +static int ecore_evas_sdl_count = 0; static Ecore_Evas * _ecore_evas_sdl_match(void) @@ -264,6 +265,7 @@ _ecore_evas_sdl_free(Ecore_Evas *ee) ecore_event_window_unregister(0); _ecore_evas_sdl_shutdown(); ecore_sdl_shutdown(); + ecore_evas_sdl_count--; } static void @@ -321,19 +323,17 @@ _ecore_evas_resize(Ecore_Evas *ee, int w, int h) } static void -_ecore_evas_move_resize(Ecore_Evas *ee, int x EINA_UNUSED, int y EINA_UNUSED, int w, int h) +_ecore_evas_move_resize(Ecore_Evas *ee, int x, int y, int w, int h) { - if ((w == ee->w) && (h == ee->h)) return; - ee->req.w = w; - ee->req.h = h; - ee->w = w; - ee->h = h; - - evas_output_size_set(ee->evas, ee->w, ee->h); - evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h); - evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h); - - if (ee->func.fn_resize) ee->func.fn_resize(ee); + if ((ee->x != x) || (ee->y != y)) + { + ee->req.x = x; + ee->req.y = y; + ee->x = x; + ee->y = y; + if (ee->func.fn_move) ee->func.fn_move(ee); + } + _ecore_evas_resize(ee, w, h); } static void @@ -463,6 +463,7 @@ _ecore_evas_internal_sdl_new(int rmethod, const char* name, int w, int h, int fu { Ecore_Evas *ee; + if (ecore_evas_sdl_count > 0) return NULL; if (!name) name = ecore_evas_sdl_default; @@ -614,6 +615,7 @@ _ecore_evas_internal_sdl_new(int rmethod, const char* name, int w, int h, int fu _ecore_evas_register(ee); sdl_ee = ee; + ecore_evas_sdl_count++; return ee; }