Switching elm config's engine variable from enum to string ptr.

SVN revision: 54081
This commit is contained in:
Gustavo Lima Chaves 2010-11-01 21:10:07 +00:00
parent a012c4b511
commit e667a17bc8
7 changed files with 188 additions and 158 deletions

View File

@ -1,6 +1,6 @@
group "Elm_Config" struct { group "Elm_Config" struct {
value "config_version" int: 65537; value "config_version" int: 65537;
value "engine" int: 0; value "engine" string: "software_x11";
value "thumbscroll_enable" uchar: 1; value "thumbscroll_enable" uchar: 1;
value "thumbscroll_threshold" int: 24; value "thumbscroll_threshold" int: 24;
value "thumbscroll_momentum_threshold" double: 100.0; value "thumbscroll_momentum_threshold" double: 100.0;

View File

@ -1,6 +1,6 @@
group "Elm_Config" struct { group "Elm_Config" struct {
value "config_version" int: 65537; value "config_version" int: 65537;
value "engine" int: 0; value "engine" string: "software_x11";
value "thumbscroll_enable" uchar: 1; value "thumbscroll_enable" uchar: 1;
value "thumbscroll_threshold" int: 24; value "thumbscroll_threshold" int: 24;
value "thumbscroll_momentum_threshold" double: 100.0; value "thumbscroll_momentum_threshold" double: 100.0;

View File

@ -1,6 +1,6 @@
group "Elm_Config" struct { group "Elm_Config" struct {
value "config_version" int: 65537; value "config_version" int: 65537;
value "engine" int: 0; value "engine" string: "software_x11";
value "thumbscroll_enable" uchar: 0; value "thumbscroll_enable" uchar: 0;
value "thumbscroll_threshold" int: 4; value "thumbscroll_threshold" int: 4;
value "thumbscroll_momentum_threshold" double: 100.0; value "thumbscroll_momentum_threshold" double: 100.0;

View File

@ -13,6 +13,22 @@ Elm_Config *_elm_config = NULL;
char *_elm_profile = NULL; char *_elm_profile = NULL;
static Eet_Data_Descriptor *_config_edd = NULL; static Eet_Data_Descriptor *_config_edd = NULL;
const char *_elm_engines[] = {
"software_x11",
"fb",
"directfb",
"software_16_x11",
"software_8_x11",
"xrender_x11",
"opengl_x11",
"software_gdi",
"software_16_wince_gdi",
"sdl",
"software_16_sdl",
"opengl_sdl",
NULL
};
static void _desc_init(void); static void _desc_init(void);
static void _desc_shutdown(void); static void _desc_shutdown(void);
static void _profile_fetch_from_conf(void); static void _profile_fetch_from_conf(void);
@ -207,7 +223,7 @@ _desc_init(void)
EET_DATA_DESCRIPTOR_ADD_BASIC(_config_edd, Elm_Config, "config_version", EET_DATA_DESCRIPTOR_ADD_BASIC(_config_edd, Elm_Config, "config_version",
config_version, EET_T_INT); config_version, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_config_edd, Elm_Config, "engine", engine, EET_DATA_DESCRIPTOR_ADD_BASIC(_config_edd, Elm_Config, "engine", engine,
EET_T_INT); EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(_config_edd, Elm_Config, "thumbscroll_enable", EET_DATA_DESCRIPTOR_ADD_BASIC(_config_edd, Elm_Config, "thumbscroll_enable",
thumbscroll_enable, EET_T_UCHAR); thumbscroll_enable, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(_config_edd, Elm_Config, EET_DATA_DESCRIPTOR_ADD_BASIC(_config_edd, Elm_Config,
@ -529,6 +545,7 @@ _config_free(void)
{ {
eina_stringshare_del(fontdir); eina_stringshare_del(fontdir);
} }
if (_elm_config->engine) eina_stringshare_del(_elm_config->engine);
if (_elm_config->theme) eina_stringshare_del(_elm_config->theme); if (_elm_config->theme) eina_stringshare_del(_elm_config->theme);
if (_elm_config->modules) eina_stringshare_del(_elm_config->modules); if (_elm_config->modules) eina_stringshare_del(_elm_config->modules);
free(_elm_config); free(_elm_config);
@ -612,7 +629,7 @@ _config_load(void)
* without the config, but do we want that? */ * without the config, but do we want that? */
_elm_config = ELM_NEW(Elm_Config); _elm_config = ELM_NEW(Elm_Config);
_elm_config->config_version = ELM_CONFIG_VERSION; _elm_config->config_version = ELM_CONFIG_VERSION;
_elm_config->engine = ELM_SOFTWARE_X11; _elm_config->engine = eina_stringshare_add("software_x11");
_elm_config->thumbscroll_enable = EINA_TRUE; _elm_config->thumbscroll_enable = EINA_TRUE;
_elm_config->thumbscroll_threshold = 24; _elm_config->thumbscroll_threshold = 24;
_elm_config->thumbscroll_momentum_threshold = 100.0; _elm_config->thumbscroll_momentum_threshold = 100.0;
@ -871,55 +888,55 @@ _env_get(void)
(!strcasecmp(s, "x")) || (!strcasecmp(s, "x")) ||
(!strcasecmp(s, "software-x11")) || (!strcasecmp(s, "software-x11")) ||
(!strcasecmp(s, "software_x11"))) (!strcasecmp(s, "software_x11")))
_elm_config->engine = ELM_SOFTWARE_X11; eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_X11);
else if ((!strcasecmp(s, "opengl")) || else if ((!strcasecmp(s, "opengl")) ||
(!strcasecmp(s, "gl")) || (!strcasecmp(s, "gl")) ||
(!strcasecmp(s, "opengl-x11")) || (!strcasecmp(s, "opengl-x11")) ||
(!strcasecmp(s, "opengl_x11"))) (!strcasecmp(s, "opengl_x11")))
_elm_config->engine = ELM_OPENGL_X11; eina_stringshare_replace(&_elm_config->engine, ELM_OPENGL_X11);
else if ((!strcasecmp(s, "x11-8")) || else if ((!strcasecmp(s, "x11-8")) ||
(!strcasecmp(s, "x18")) || (!strcasecmp(s, "x18")) ||
(!strcasecmp(s, "software-8-x11")) || (!strcasecmp(s, "software-8-x11")) ||
(!strcasecmp(s, "software_8_x11"))) (!strcasecmp(s, "software_8_x11")))
_elm_config->engine = ELM_SOFTWARE_8_X11; eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_8_X11);
else if ((!strcasecmp(s, "x11-16")) || else if ((!strcasecmp(s, "x11-16")) ||
(!strcasecmp(s, "x16")) || (!strcasecmp(s, "x16")) ||
(!strcasecmp(s, "software-16-x11")) || (!strcasecmp(s, "software-16-x11")) ||
(!strcasecmp(s, "software_16_x11"))) (!strcasecmp(s, "software_16_x11")))
_elm_config->engine = ELM_SOFTWARE_16_X11; eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_16_X11);
else if ((!strcasecmp(s, "xrender")) || else if ((!strcasecmp(s, "xrender")) ||
(!strcasecmp(s, "xr")) || (!strcasecmp(s, "xr")) ||
(!strcasecmp(s, "xrender-x11")) || (!strcasecmp(s, "xrender-x11")) ||
(!strcasecmp(s, "xrender_x11"))) (!strcasecmp(s, "xrender_x11")))
_elm_config->engine = ELM_XRENDER_X11; eina_stringshare_replace(&_elm_config->engine, ELM_XRENDER_X11);
else if ((!strcasecmp(s, "fb")) || else if ((!strcasecmp(s, "fb")) ||
(!strcasecmp(s, "software-fb")) || (!strcasecmp(s, "software-fb")) ||
(!strcasecmp(s, "software_fb"))) (!strcasecmp(s, "software_fb")))
_elm_config->engine = ELM_SOFTWARE_FB; eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_FB);
else if ((!strcasecmp(s, "directfb")) || else if ((!strcasecmp(s, "directfb")) ||
(!strcasecmp(s, "dfb"))) (!strcasecmp(s, "dfb")))
_elm_config->engine = ELM_SOFTWARE_DIRECTFB; eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_DIRECTFB);
else if ((!strcasecmp(s, "sdl")) || else if ((!strcasecmp(s, "sdl")) ||
(!strcasecmp(s, "software-sdl")) || (!strcasecmp(s, "software-sdl")) ||
(!strcasecmp(s, "software_sdl"))) (!strcasecmp(s, "software_sdl")))
_elm_config->engine = ELM_SOFTWARE_SDL; eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_SDL);
else if ((!strcasecmp(s, "sdl-16")) || else if ((!strcasecmp(s, "sdl-16")) ||
(!strcasecmp(s, "software-16-sdl")) || (!strcasecmp(s, "software-16-sdl")) ||
(!strcasecmp(s, "software_16_sdl"))) (!strcasecmp(s, "software_16_sdl")))
_elm_config->engine = ELM_SOFTWARE_16_SDL; eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_16_SDL);
else if ((!strcasecmp(s, "opengl-sdl")) || else if ((!strcasecmp(s, "opengl-sdl")) ||
(!strcasecmp(s, "opengl_sdl")) || (!strcasecmp(s, "opengl_sdl")) ||
(!strcasecmp(s, "gl-sdl")) || (!strcasecmp(s, "gl-sdl")) ||
(!strcasecmp(s, "gl_sdl"))) (!strcasecmp(s, "gl_sdl")))
_elm_config->engine = ELM_OPENGL_SDL; eina_stringshare_replace(&_elm_config->engine, ELM_OPENGL_SDL);
else if ((!strcasecmp(s, "gdi")) || else if ((!strcasecmp(s, "gdi")) ||
(!strcasecmp(s, "software-gdi")) || (!strcasecmp(s, "software-gdi")) ||
(!strcasecmp(s, "software_gdi"))) (!strcasecmp(s, "software_gdi")))
_elm_config->engine = ELM_SOFTWARE_WIN32; eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_WIN32);
else if ((!strcasecmp(s, "wince-gdi")) || else if ((!strcasecmp(s, "wince-gdi")) ||
(!strcasecmp(s, "software-16-wince-gdi")) || (!strcasecmp(s, "software-16-wince-gdi")) ||
(!strcasecmp(s, "software_16_wince_gdi"))) (!strcasecmp(s, "software_16_wince_gdi")))
_elm_config->engine = ELM_SOFTWARE_16_WINCE; eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_16_WINCE);
} }
s = getenv("ELM_THUMBSCROLL_ENABLE"); s = getenv("ELM_THUMBSCROLL_ENABLE");
@ -1051,10 +1068,12 @@ _elm_config_init(void)
void void
_elm_config_sub_init(void) _elm_config_sub_init(void)
{ {
if ((_elm_config->engine == ELM_SOFTWARE_X11) || #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
(_elm_config->engine == ELM_SOFTWARE_16_X11) || if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
(_elm_config->engine == ELM_XRENDER_X11) || ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
(_elm_config->engine == ELM_OPENGL_X11)) ENGINE_COMPARE(ELM_XRENDER_X11) ||
ENGINE_COMPARE(ELM_OPENGL_X11))
#undef ENGINE_COMPARE
{ {
#ifdef HAVE_ELEMENTARY_X #ifdef HAVE_ELEMENTARY_X
unsigned int val = 1000; unsigned int val = 1000;
@ -1174,15 +1193,12 @@ _elm_config_profile_set(const char *profile)
void void
_elm_config_shutdown(void) _elm_config_shutdown(void)
{ {
if ((_elm_config->engine == ELM_SOFTWARE_X11) || #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
(_elm_config->engine == ELM_SOFTWARE_16_X11) || if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
(_elm_config->engine == ELM_XRENDER_X11) || ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
(_elm_config->engine == ELM_OPENGL_X11) || ENGINE_COMPARE(ELM_XRENDER_X11) ||
(_elm_config->engine == ELM_SOFTWARE_SDL) || ENGINE_COMPARE(ELM_OPENGL_X11))
(_elm_config->engine == ELM_SOFTWARE_16_SDL) || #undef ENGINE_COMPARE
(_elm_config->engine == ELM_OPENGL_SDL) ||
(_elm_config->engine == ELM_SOFTWARE_WIN32) ||
(_elm_config->engine == ELM_SOFTWARE_16_WINCE))
{ {
#ifdef HAVE_ELEMENTARY_X #ifdef HAVE_ELEMENTARY_X
ecore_event_handler_del(_prop_change_handler); ecore_event_handler_del(_prop_change_handler);

View File

@ -564,10 +564,12 @@ elm_quicklaunch_sub_init(int argc, char **argv)
evas_init(); evas_init();
edje_init(); edje_init();
_elm_config_sub_init(); _elm_config_sub_init();
if ((_elm_config->engine == ELM_SOFTWARE_X11) || #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
(_elm_config->engine == ELM_SOFTWARE_16_X11) || if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
(_elm_config->engine == ELM_XRENDER_X11) || ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
(_elm_config->engine == ELM_OPENGL_X11)) ENGINE_COMPARE(ELM_XRENDER_X11) ||
ENGINE_COMPARE(ELM_OPENGL_X11))
#undef ENGINE_COMPARE
{ {
#ifdef HAVE_ELEMENTARY_X #ifdef HAVE_ELEMENTARY_X
ecore_x_init(NULL); ecore_x_init(NULL);
@ -597,24 +599,28 @@ elm_quicklaunch_sub_shutdown(void)
_elm_module_shutdown(); _elm_module_shutdown();
ecore_imf_shutdown(); ecore_imf_shutdown();
ecore_evas_shutdown(); ecore_evas_shutdown();
if ((_elm_config->engine == ELM_SOFTWARE_X11) || #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
(_elm_config->engine == ELM_SOFTWARE_16_X11) || if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
(_elm_config->engine == ELM_XRENDER_X11) || ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
(_elm_config->engine == ELM_OPENGL_X11)) ENGINE_COMPARE(ELM_XRENDER_X11) ||
ENGINE_COMPARE(ELM_OPENGL_X11))
#undef ENGINE_COMPARE
{ {
#ifdef HAVE_ELEMENTARY_X #ifdef HAVE_ELEMENTARY_X
ecore_x_disconnect(); ecore_x_disconnect();
#endif #endif
} }
if ((_elm_config->engine == ELM_SOFTWARE_X11) || #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
(_elm_config->engine == ELM_SOFTWARE_16_X11) || if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
(_elm_config->engine == ELM_XRENDER_X11) || ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
(_elm_config->engine == ELM_OPENGL_X11) || ENGINE_COMPARE(ELM_XRENDER_X11) ||
(_elm_config->engine == ELM_SOFTWARE_SDL) || ENGINE_COMPARE(ELM_OPENGL_X11) ||
(_elm_config->engine == ELM_SOFTWARE_16_SDL) || ENGINE_COMPARE(ELM_SOFTWARE_SDL) ||
(_elm_config->engine == ELM_OPENGL_SDL) || ENGINE_COMPARE(ELM_SOFTWARE_16_SDL) ||
(_elm_config->engine == ELM_SOFTWARE_WIN32) || ENGINE_COMPARE(ELM_OPENGL_SDL) ||
(_elm_config->engine == ELM_SOFTWARE_16_WINCE)) ENGINE_COMPARE(ELM_SOFTWARE_WIN32) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
#undef ENGINE_COMPARE
evas_cserve_disconnect(); evas_cserve_disconnect();
edje_shutdown(); edje_shutdown();
evas_shutdown(); evas_shutdown();
@ -678,10 +684,12 @@ elm_quicklaunch_seed(void)
ecore_main_loop_iterate(); ecore_main_loop_iterate();
evas_object_del(win); evas_object_del(win);
ecore_main_loop_iterate(); ecore_main_loop_iterate();
if ((_elm_config->engine == ELM_SOFTWARE_X11) || #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
(_elm_config->engine == ELM_SOFTWARE_16_X11) || if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
(_elm_config->engine == ELM_XRENDER_X11) || ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
(_elm_config->engine == ELM_OPENGL_X11)) ENGINE_COMPARE(ELM_XRENDER_X11) ||
ENGINE_COMPARE(ELM_OPENGL_X11))
#undef ENGINE_COMPARE
{ {
# ifdef HAVE_ELEMENTARY_X # ifdef HAVE_ELEMENTARY_X
ecore_x_sync(); ecore_x_sync();
@ -829,10 +837,12 @@ elm_quicklaunch_fork(int argc, char **argv, char *cwd, void (postfork_func) (voi
evas_init(); evas_init();
edje_init(); edje_init();
_elm_config_sub_init(); _elm_config_sub_init();
if ((_elm_config->engine == ELM_SOFTWARE_X11) || #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
(_elm_config->engine == ELM_SOFTWARE_16_X11) || if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
(_elm_config->engine == ELM_XRENDER_X11) || ENGINE_COMPARE(ELM_SOFTWARE_16_X11) ||
(_elm_config->engine == ELM_OPENGL_X11)) ENGINE_COMPARE(ELM_XRENDER_X11) ||
ENGINE_COMPARE(ELM_OPENGL_X11))
#undef ENGINE_COMPARE
{ {
# ifdef HAVE_ELEMENTARY_X # ifdef HAVE_ELEMENTARY_X
ecore_x_init(NULL); ecore_x_init(NULL);

View File

@ -39,24 +39,6 @@ struct _Elm_Theme
int ref; int ref;
}; };
typedef enum _Elm_Engine
{
ELM_SOFTWARE_X11,
ELM_SOFTWARE_FB,
ELM_SOFTWARE_DIRECTFB,
ELM_SOFTWARE_16_X11,
ELM_SOFTWARE_8_X11,
ELM_XRENDER_X11,
ELM_OPENGL_X11,
ELM_SOFTWARE_WIN32,
ELM_SOFTWARE_16_WINCE,
ELM_SOFTWARE_SDL,
ELM_SOFTWARE_16_SDL,
ELM_OPENGL_SDL
} Elm_Engine;
/* increment this whenever we change config enough that you need new /* increment this whenever we change config enough that you need new
* defaults for elm to work. * defaults for elm to work.
*/ */
@ -67,10 +49,26 @@ typedef enum _Elm_Engine
#define ELM_CONFIG_FILE_GENERATION 0x0001 #define ELM_CONFIG_FILE_GENERATION 0x0001
#define ELM_CONFIG_VERSION ((ELM_CONFIG_EPOCH << 16) | ELM_CONFIG_FILE_GENERATION) #define ELM_CONFIG_VERSION ((ELM_CONFIG_EPOCH << 16) | ELM_CONFIG_FILE_GENERATION)
/* note: always remember to sync it with elm_config.c */
extern const char *_elm_engines[];
#define ELM_SOFTWARE_X11 (_elm_engines[0])
#define ELM_SOFTWARE_FB (_elm_engines[1])
#define ELM_SOFTWARE_DIRECTFB (_elm_engines[2])
#define ELM_SOFTWARE_16_X11 (_elm_engines[3])
#define ELM_SOFTWARE_8_X11 (_elm_engines[4])
#define ELM_XRENDER_X11 (_elm_engines[5])
#define ELM_OPENGL_X11 (_elm_engines[6])
#define ELM_SOFTWARE_WIN32 (_elm_engines[7])
#define ELM_SOFTWARE_16_WINCE (_elm_engines[8])
#define ELM_SOFTWARE_SDL (_elm_engines[9])
#define ELM_SOFTWARE_16_SDL (_elm_engines[10])
#define ELM_OPENGL_SDL (_elm_engines[11])
struct _Elm_Config struct _Elm_Config
{ {
int config_version; int config_version;
int engine; const char *engine;
Eina_Bool thumbscroll_enable; Eina_Bool thumbscroll_enable;
int thumbscroll_threshold; int thumbscroll_threshold;
double thumbscroll_momentum_threshold; double thumbscroll_momentum_threshold;

View File

@ -323,36 +323,41 @@ static void
_elm_win_xwindow_get(Elm_Win *win) _elm_win_xwindow_get(Elm_Win *win)
{ {
win->xwin = 0; win->xwin = 0;
switch (_elm_config->engine)
#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
if (ENGINE_COMPARE(ELM_SOFTWARE_X11))
{ {
case ELM_SOFTWARE_X11: if (win->ee) win->xwin = ecore_evas_software_x11_window_get(win->ee);
if (win->ee) win->xwin = ecore_evas_software_x11_window_get(win->ee);
break;
case ELM_SOFTWARE_FB:
case ELM_SOFTWARE_DIRECTFB:
case ELM_SOFTWARE_16_WINCE:
case ELM_SOFTWARE_SDL:
case ELM_SOFTWARE_16_SDL:
case ELM_OPENGL_SDL:
break;
case ELM_SOFTWARE_16_X11:
if (win->ee) win->xwin = ecore_evas_software_x11_16_window_get(win->ee);
break;
case ELM_SOFTWARE_8_X11:
if (win->ee) win->xwin = ecore_evas_software_x11_8_window_get(win->ee);
break;
case ELM_XRENDER_X11:
if (win->ee) win->xwin = ecore_evas_xrender_x11_window_get(win->ee);
break;
case ELM_OPENGL_X11:
if (win->ee) win->xwin = ecore_evas_gl_x11_window_get(win->ee);
break;
case ELM_SOFTWARE_WIN32:
if (win->ee) win->xwin = (long)ecore_evas_win32_window_get(win->ee);
break;
default:
break;
} }
else if (ENGINE_COMPARE(ELM_SOFTWARE_X11) ||
ENGINE_COMPARE(ELM_SOFTWARE_FB) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE) ||
ENGINE_COMPARE(ELM_SOFTWARE_SDL) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_SDL) ||
ENGINE_COMPARE(ELM_OPENGL_SDL))
{
}
else if (ENGINE_COMPARE(ELM_SOFTWARE_16_X11))
{
if (win->ee) win->xwin = ecore_evas_software_x11_16_window_get(win->ee);
}
else if (ENGINE_COMPARE(ELM_SOFTWARE_8_X11))
{
if (win->ee) win->xwin = ecore_evas_software_x11_8_window_get(win->ee);
}
else if (ENGINE_COMPARE(ELM_XRENDER_X11))
{
if (win->ee) win->xwin = ecore_evas_xrender_x11_window_get(win->ee);
}
else if (ENGINE_COMPARE(ELM_OPENGL_X11))
{
if (win->ee) win->xwin = ecore_evas_gl_x11_window_get(win->ee);
}
else if (ENGINE_COMPARE(ELM_SOFTWARE_WIN32))
{
if (win->ee) win->xwin = (long)ecore_evas_win32_window_get(win->ee);
}
#undef ENGINE_COMPARE
} }
#endif #endif
@ -906,22 +911,26 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
const char *fontpath; const char *fontpath;
win = ELM_NEW(Elm_Win); win = ELM_NEW(Elm_Win);
switch (_elm_config->engine)
#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
if (ENGINE_COMPARE(ELM_SOFTWARE_X11))
{ {
case ELM_SOFTWARE_X11:
win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1); win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1);
#ifdef HAVE_ELEMENTARY_X #ifdef HAVE_ELEMENTARY_X
win->client_message_handler = ecore_event_handler_add win->client_message_handler = ecore_event_handler_add
(ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win); (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win);
#endif #endif
break; }
case ELM_SOFTWARE_FB: else if (ENGINE_COMPARE(ELM_SOFTWARE_FB))
{
win->ee = ecore_evas_fb_new(NULL, 0, 1, 1); win->ee = ecore_evas_fb_new(NULL, 0, 1, 1);
break; }
case ELM_SOFTWARE_DIRECTFB: else if (ENGINE_COMPARE(ELM_SOFTWARE_DIRECTFB))
{
win->ee = ecore_evas_directfb_new(NULL, 1, 0, 0, 1, 1); win->ee = ecore_evas_directfb_new(NULL, 1, 0, 0, 1, 1);
break; }
case ELM_SOFTWARE_16_X11: else if (ENGINE_COMPARE(ELM_SOFTWARE_16_X11))
{
win->ee = ecore_evas_software_x11_16_new(NULL, 0, 0, 0, 1, 1); win->ee = ecore_evas_software_x11_16_new(NULL, 0, 0, 0, 1, 1);
if (!win->ee) if (!win->ee)
{ {
@ -932,8 +941,9 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
win->client_message_handler = ecore_event_handler_add win->client_message_handler = ecore_event_handler_add
(ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win); (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win);
#endif #endif
break; }
case ELM_SOFTWARE_8_X11: else if (ENGINE_COMPARE(ELM_SOFTWARE_8_X11))
{
win->ee = ecore_evas_software_x11_8_new(NULL, 0, 0, 0, 1, 1); win->ee = ecore_evas_software_x11_8_new(NULL, 0, 0, 0, 1, 1);
if (!win->ee) if (!win->ee)
{ {
@ -944,8 +954,9 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
win->client_message_handler = ecore_event_handler_add win->client_message_handler = ecore_event_handler_add
(ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win); (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win);
#endif #endif
break; }
case ELM_XRENDER_X11: else if (ENGINE_COMPARE(ELM_XRENDER_X11))
{
win->ee = ecore_evas_xrender_x11_new(NULL, 0, 0, 0, 1, 1); win->ee = ecore_evas_xrender_x11_new(NULL, 0, 0, 0, 1, 1);
if (!win->ee) if (!win->ee)
{ {
@ -956,8 +967,9 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
win->client_message_handler = ecore_event_handler_add win->client_message_handler = ecore_event_handler_add
(ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win); (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win);
#endif #endif
break; }
case ELM_OPENGL_X11: else if (ENGINE_COMPARE(ELM_OPENGL_X11))
{
win->ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 1, 1); win->ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 1, 1);
if (!win->ee) if (!win->ee)
{ {
@ -968,40 +980,43 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
win->client_message_handler = ecore_event_handler_add win->client_message_handler = ecore_event_handler_add
(ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win); (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win);
#endif #endif
break; }
case ELM_SOFTWARE_WIN32: else if (ENGINE_COMPARE(ELM_SOFTWARE_WIN32))
{
win->ee = ecore_evas_software_gdi_new(NULL, 0, 0, 1, 1); win->ee = ecore_evas_software_gdi_new(NULL, 0, 0, 1, 1);
break; }
case ELM_SOFTWARE_16_WINCE: else if (ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
{
win->ee = ecore_evas_software_wince_gdi_new(NULL, 0, 0, 1, 1); win->ee = ecore_evas_software_wince_gdi_new(NULL, 0, 0, 1, 1);
break; }
case ELM_SOFTWARE_SDL: else if (ENGINE_COMPARE(ELM_SOFTWARE_SDL))
{
win->ee = ecore_evas_sdl_new(NULL, 0, 0, 0, 0, 0, 1); win->ee = ecore_evas_sdl_new(NULL, 0, 0, 0, 0, 0, 1);
if (!win->ee) if (!win->ee)
{ {
CRITICAL("Software SDL engine create failed. Try software."); CRITICAL("Software SDL engine create failed. Try software.");
win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1); win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1);
} }
break; }
case ELM_SOFTWARE_16_SDL: else if (ENGINE_COMPARE(ELM_SOFTWARE_16_SDL))
{
win->ee = ecore_evas_sdl16_new(NULL, 0, 0, 0, 0, 0, 1); win->ee = ecore_evas_sdl16_new(NULL, 0, 0, 0, 0, 0, 1);
if (!win->ee) if (!win->ee)
{ {
CRITICAL("Sofware-16-SDL engine create failed. Try software."); CRITICAL("Sofware-16-SDL engine create failed. Try software.");
win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1); win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1);
} }
break; }
case ELM_OPENGL_SDL: else if (ENGINE_COMPARE(ELM_OPENGL_SDL))
{
win->ee = ecore_evas_gl_sdl_new(NULL, 1, 1, 0, 0); win->ee = ecore_evas_gl_sdl_new(NULL, 1, 1, 0, 0);
if (!win->ee) if (!win->ee)
{ {
CRITICAL("OpenGL SDL engine create failed. Try software."); CRITICAL("OpenGL SDL engine create failed. Try software.");
win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1); win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1);
} }
break;
default:
break;
} }
if (!win->ee) if (!win->ee)
{ {
ERR("Cannot create window."); ERR("Cannot create window.");
@ -1073,24 +1088,11 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
_elm_win_list = eina_list_append(_elm_win_list, win->win_obj); _elm_win_list = eina_list_append(_elm_win_list, win->win_obj);
switch (_elm_config->engine) if (ENGINE_COMPARE(ELM_SOFTWARE_FB))
{ {
case ELM_SOFTWARE_16_WINCE:
case ELM_SOFTWARE_FB:
ecore_evas_fullscreen_set(win->ee, 1); ecore_evas_fullscreen_set(win->ee, 1);
break;
case ELM_SOFTWARE_X11:
case ELM_SOFTWARE_16_X11:
case ELM_SOFTWARE_8_X11:
case ELM_XRENDER_X11:
case ELM_OPENGL_X11:
case ELM_SOFTWARE_WIN32:
case ELM_SOFTWARE_SDL:
case ELM_SOFTWARE_16_SDL:
case ELM_OPENGL_SDL:
default:
break;
} }
#undef ENGINE_COMPARE
if (_elm_config->focus_highlight_enable) if (_elm_config->focus_highlight_enable)
elm_win_focus_highlight_enabled_set(win->win_obj, EINA_TRUE); elm_win_focus_highlight_enabled_set(win->win_obj, EINA_TRUE);
@ -1513,19 +1515,22 @@ elm_win_fullscreen_set(Evas_Object *obj, Eina_Bool fullscreen)
ELM_CHECK_WIDTYPE(obj, widtype); ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj); win = elm_widget_data_get(obj);
if (!win) return; if (!win) return;
switch (_elm_config->engine)
#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
if (ENGINE_COMPARE(ELM_SOFTWARE_FB) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
{ {
case ELM_SOFTWARE_16_WINCE:
case ELM_SOFTWARE_FB:
// these engines... can ONLY be fullscreen // these engines... can ONLY be fullscreen
break; return;
default: }
else
{
ecore_evas_fullscreen_set(win->ee, fullscreen); ecore_evas_fullscreen_set(win->ee, fullscreen);
#ifdef HAVE_ELEMENTARY_X #ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win); _elm_win_xwin_update(win);
#endif #endif
break;
} }
#undef ENGINE_COMPARE
} }
/** /**
@ -1543,18 +1548,19 @@ elm_win_fullscreen_get(const Evas_Object *obj)
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
win = elm_widget_data_get(obj); win = elm_widget_data_get(obj);
if (!win) return EINA_FALSE; if (!win) return EINA_FALSE;
switch (_elm_config->engine)
#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
if (ENGINE_COMPARE(ELM_SOFTWARE_FB) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
{ {
case ELM_SOFTWARE_16_WINCE:
case ELM_SOFTWARE_FB:
// these engines... can ONLY be fullscreen // these engines... can ONLY be fullscreen
return EINA_TRUE; return EINA_TRUE;
break;
default:
return ecore_evas_fullscreen_get(win->ee);
break;
} }
return EINA_FALSE; else
{
return ecore_evas_fullscreen_get(win->ee);
}
#undef ENGINE_COMPARE
} }
/** /**