Merge branch 'devs/devilhorns/drm'

This commit is contained in:
Chris Michael 2014-04-01 07:12:31 +01:00
commit 204481045f
3 changed files with 30 additions and 17 deletions

View File

@ -49,6 +49,7 @@ const char *_elm_engines[] = {
"psl1ght",
"wayland_shm",
"wayland_egl",
"drm",
NULL
};
@ -1884,6 +1885,8 @@ _env_get(void)
eina_stringshare_replace(&_elm_config->engine, ELM_WAYLAND_SHM);
else if ((!strcasecmp(s, "wayland_egl")))
eina_stringshare_replace(&_elm_config->engine, ELM_WAYLAND_EGL);
else if ((!strcasecmp(s, "drm")))
eina_stringshare_replace(&_elm_config->engine, ELM_DRM);
else
ERR("Unknown engine '%s'.", s);
}

View File

@ -12,6 +12,9 @@
#ifdef HAVE_ELEMENTARY_WAYLAND
#include <Ecore_Wayland.h>
#endif
#ifdef HAVE_ELEMENTARY_DRM
#include <Ecore_Drm.h>
#endif
#include <Eio.h>
@ -151,6 +154,7 @@ extern const char *_elm_engines[];
#define ELM_SOFTWARE_PSL1GHT (_elm_engines[15])
#define ELM_WAYLAND_SHM (_elm_engines[16])
#define ELM_WAYLAND_EGL (_elm_engines[17])
#define ELM_DRM (_elm_engines[18])
#define ELM_FONT_TOKEN_STYLE ":style="

View File

@ -2228,8 +2228,6 @@ _elm_win_frame_cb_move_start(void *data,
(void)source;
#endif
/* FIXME: Change mouse pointer */
/* NB: Wayland handles moving surfaces by itself so we cannot
* specify a specific x/y we want. Instead, we will pass in the
* existing x/y values so they can be recorded as 'previous'
@ -2931,8 +2929,9 @@ _elm_win_constructor(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_Type t
else if ((disp) && (!strcmp(disp, "fb")))
{
enginelist[0] = ENGINE_GET();
enginelist[1] = ELM_SOFTWARE_FB;
enginelist[2] = NULL;
enginelist[1] = ELM_DRM;
enginelist[2] = ELM_SOFTWARE_FB;
enginelist[3] = NULL;
}
else if ((disp) && (!strcmp(disp, "buffer")))
{
@ -2957,20 +2956,22 @@ _elm_win_constructor(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_Type t
{
enginelist[0] = ELM_OPENGL_X11;
enginelist[1] = ELM_WAYLAND_EGL;
enginelist[2] = ELM_SOFTWARE_FB;
enginelist[3] = ELM_OPENGL_COCOA;
enginelist[4] = ELM_OPENGL_SDL;
enginelist[5] = NULL;
enginelist[2] = ELM_DRM;
enginelist[3] = ELM_SOFTWARE_FB;
enginelist[4] = ELM_OPENGL_COCOA;
enginelist[5] = ELM_OPENGL_SDL;
enginelist[6] = NULL;
}
else
{
enginelist[0] = ENGINE_GET();
enginelist[1] = ELM_SOFTWARE_X11;
enginelist[2] = ELM_WAYLAND_SHM;
enginelist[3] = ELM_SOFTWARE_FB;
enginelist[4] = ELM_OPENGL_COCOA;
enginelist[5] = ELM_SOFTWARE_SDL;
enginelist[6] = NULL;
enginelist[3] = ELM_DRM;
enginelist[4] = ELM_SOFTWARE_FB;
enginelist[5] = ELM_OPENGL_COCOA;
enginelist[6] = ELM_SOFTWARE_SDL;
enginelist[7] = NULL;
}
}
for (i = 0; i < 30; i++)
@ -3013,6 +3014,8 @@ _elm_win_constructor(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_Type t
tmp_sd.ee = ecore_evas_buffer_new(1, 1);
else if (!strcmp(enginelist[i], ELM_SOFTWARE_PSL1GHT))
tmp_sd.ee = ecore_evas_psl1ght_new(NULL, 1, 1);
else if (!strcmp(enginelist[i], ELM_DRM))
tmp_sd.ee = ecore_evas_drm_new(NULL, 0, 0, 0, 1, 1);
else if (!strncmp(enginelist[i], "shot:", 5))
{
tmp_sd.ee = ecore_evas_buffer_new(1, 1);
@ -3097,7 +3100,7 @@ _elm_win_constructor(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_Type t
(((sd->x.xwin) && (!ecore_x_screen_is_composited(0))) ||
(!sd->x.xwin)))
#else
)
)
#endif
TRAP(sd, avoid_damage_set, ECORE_EVAS_AVOID_DAMAGE_EXPOSE);
// bg pixmap done by x - has other issues like can be redrawn by x before it
@ -3173,7 +3176,7 @@ _elm_win_constructor(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_Type t
_elm_win_list = eina_list_append(_elm_win_list, obj);
_elm_win_count++;
if ((engine) && (!strcmp(engine, ELM_SOFTWARE_FB)))
if ((engine) && ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM))))
{
TRAP(sd, fullscreen_set, 1);
}
@ -3201,7 +3204,8 @@ _elm_win_constructor(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_Type t
if ((_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_ON) ||
((_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_AUTO) &&
((engine) && (!strcmp(engine, ELM_SOFTWARE_FB)))))
((engine) &&
((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM))))))
{
Evas_Object *o;
Evas_Coord mw = 1, mh = 1, hx = 0, hy = 0;
@ -3532,7 +3536,8 @@ _elm_win_fullscreen_set(Eo *obj EINA_UNUSED, Elm_Win_Data *sd, Eina_Bool fullscr
{
// YYY: handle if sd->img_obj
if (ENGINE_COMPARE(ELM_SOFTWARE_FB) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE) ||
ENGINE_COMPARE(ELM_DRM))
{
// these engines... can ONLY be fullscreen
return;
@ -3576,7 +3581,8 @@ _elm_win_fullscreen_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd)
if (engine_name &&
((!strcmp(engine_name, ELM_SOFTWARE_FB)) ||
(!strcmp(engine_name, ELM_SOFTWARE_16_WINCE))))
(!strcmp(engine_name, ELM_SOFTWARE_16_WINCE)) ||
(!strcmp(engine_name, ELM_DRM))))
{
// these engines... can ONLY be fullscreen
return EINA_TRUE;