init wayland support 62/13862/5 accepted/tizen/ivi/stable accepted/tizen/mobile accepted/tizen_3.0.2014.q3_common accepted/tizen_generic accepted/tizen_ivi_panda accepted/tizen_ivi_release tizen_3.0.2014.q3_common tizen_ivi_release accepted/tizen/generic/20140312.100856 accepted/tizen/ivi/20140108.024012 accepted/tizen/ivi/panda/20140312.085250 accepted/tizen/ivi/release/20140312.041340 accepted/tizen/ivi/release/20140312.114410 accepted/tizen/mobile/20140108.163232 submit/tizen/20140108.020237 submit/tizen/20140312.070630 submit/tizen_ivi_release/20140312.035359 submit/tizen_ivi_release/20140312.071054 submit/tizen_mobile/20141120.000000 tizen_3.0.2014.q3_common_release
authorLi,Limin <liminx.li@intel.com>
Thu, 19 Dec 2013 02:22:21 +0000 (10:22 +0800)
committerLi,Limin <liminx.li@intel.com>
Fri, 20 Dec 2013 08:16:15 +0000 (16:16 +0800)
The display server based on X or Wayland, is now a choice of different profile in Tizen 3.0.
Basically and consistently, two macros were used "with wayland" and "with x".
Below summarize the combination of the macros:

    | wayland |  x  | meaning
    |---------------------------
    |   0     |  1  | pure X11 platform(no wayland)
    |   1     |  0  | pure wayland platform (no X11)
    |   1     |  1  | wayland but X compatibility
    |   0     |  0  | no X and no wayland

This method unifies the meaning and usage. Deploy this method to starter package.

Signed-off-by: Li,Limin <liminx.li@intel.com>
Change-Id: Idcdda548d545720c7649c10afba209be48fa33c9

CMakeLists.txt
packaging/starter.spec
src/hw_key.c
src/lockd-window-mgr.c
src/x11.c
src/xmonitor.c

index d563331..8765878 100755 (executable)
@@ -12,36 +12,39 @@ SET(LOCALEDIR "${DATADIR}/locale")
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
 
 INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs REQUIRED
-       ail
-       aul
-       capi-system-media-key
-       db-util
-       dlog
-       ecore
-       ecore-evas
-       ecore-input
-       ecore-x
-       eet
-       eina
-       elementary
-       evas
-       heynoti
-       sysman
-       syspopup-caller
-       utilX
-       vconf
-       x11
-       xcomposite
-       xext
-       appcore-efl
-       glib-2.0
-       ui-gadget-1
-       bundle
-       capi-appfw-application
-       capi-system-info
-       pkgmgr-info
-)
+SET(PKGS_CHECK_MODULES
+        ail
+        aul
+        capi-system-media-key
+        db-util
+        dlog
+        ecore
+        ecore-evas
+        ecore-input
+        eet
+        eina
+        elementary
+        evas
+        heynoti
+        sysman
+        syspopup-caller
+        vconf
+        appcore-efl
+        glib-2.0
+        ui-gadget-1
+        bundle
+        capi-appfw-application
+        capi-system-info
+        pkgmgr-info)
+
+IF (with_x)
+        pkg_check_modules(pkgs REQUIRED ${PKGS_CHECK_MODULES} ecore-x utilX x11 xcomposite xext)
+ENDIF(with_x)
+
+IF (with_wayland)
+        ADD_DEFINITIONS("-DWAYLAND")
+        pkg_check_modules(pkgs REQUIRED ${PKGS_CHECK_MODULES})
+ENDIF(with_wayland)
 
 FOREACH(flag ${pkgs_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
index 6ed31cd..381b1f3 100644 (file)
@@ -1,3 +1,6 @@
+%bcond_with x
+%bcond_with wayland
+
 Name:       starter
 Summary:    starter
 Version: 0.4.62
@@ -29,11 +32,14 @@ BuildRequires:  pkgconfig(sysman)
 BuildRequires:  pkgconfig(syspopup-caller)
 BuildRequires:  pkgconfig(tapi)
 BuildRequires:  pkgconfig(ui-gadget-1)
+%if %{with x}
 BuildRequires:  pkgconfig(utilX)
-BuildRequires:  pkgconfig(vconf)
 BuildRequires:  pkgconfig(x11)
 BuildRequires:  pkgconfig(xcomposite)
 BuildRequires:  pkgconfig(xext)
+BuildRequires:  pkgconfig(ecore-x)
+%endif
+BuildRequires:  pkgconfig(vconf)
 BuildRequires:  pkgconfig(capi-system-info)
 BuildRequires: pkgconfig(pkgmgr-info)
 BuildRequires:  cmake
@@ -50,9 +56,13 @@ Description: Starter
 %setup -q
 cp %{SOURCE1001} .
 
-%cmake .
-
 %build
+%cmake . \
+%if %{with wayland} && !%{with x}
+-Dwith_wayland=TRUE
+%else
+-Dwith_x=TRUE
+%endif
 
 make -j1
 %install
index 7e4c3fc..359d0fc 100755 (executable)
 #include <ail.h>
 #include <bundle.h>
 #include <Elementary.h>
+
+#ifndef WAYLAND
 #include <Ecore_X.h>
+#include <utilX.h>
+#endif
+
 #include <Ecore_Input.h>
 #include <sysman.h>
 #include <syspopup_caller.h>
-#include <utilX.h>
 #include <vconf.h>
 #include <system/media_key.h>
 
@@ -156,6 +160,7 @@ static Eina_Bool _key_release_cb(void *data, int type, void *event)
                return ECORE_CALLBACK_RENEW;
        }
 
+#ifndef WAYLAND
        if (!strcmp(ev->keyname, KEY_END)) {
        } else if (!strcmp(ev->keyname, KEY_CONFIG)) {
        } else if (!strcmp(ev->keyname, KEY_SEND)) {
@@ -192,6 +197,7 @@ static Eina_Bool _key_release_cb(void *data, int type, void *event)
        } else if (!strcmp(ev->keyname, KEY_MEDIA)) {
                _release_multimedia_key("KEY_PLAYCD");
        }
+#endif
 
        return ECORE_CALLBACK_RENEW;
 }
@@ -210,6 +216,7 @@ static Eina_Bool _key_press_cb(void *data, int type, void *event)
                return ECORE_CALLBACK_RENEW;
        }
 
+#ifndef WAYLAND
        if (!strcmp(ev->keyname, KEY_SEND)) {
                _D("Launch calllog");
                if (menu_daemon_open_app(CALLLOG_PKG_NAME) < 0)
@@ -240,6 +247,7 @@ static Eina_Bool _key_press_cb(void *data, int type, void *event)
        } else if (!strcmp(ev->keyname, KEY_MEDIA)) {
                _D("Media key is pressed");
        }
+#endif
 
        return ECORE_CALLBACK_RENEW;
 }
@@ -262,6 +270,7 @@ void _media_key_event_cb(media_key_e key, media_key_event_e status, void *user_d
 
 void create_key_window(void)
 {
+#ifndef WAYLAND
        key_info.win = ecore_x_window_input_new(0, 0, 0, 1, 1);
        if (!key_info.win) {
                _D("Failed to create hidden window");
@@ -287,12 +296,14 @@ void create_key_window(void)
                _D("Failed to register a key down event handler");
 
        media_key_reserve(_media_key_event_cb, NULL);
+#endif
 }
 
 
 
 void destroy_key_window(void)
 {
+#ifndef WAYLAND
        utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_HOME);
        utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_VOLUMEDOWN);
        utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_VOLUMEUP);
@@ -313,6 +324,7 @@ void destroy_key_window(void)
        key_info.win = 0x0;
 
        media_key_release();
+#endif
 }
 
 
index 4d826e5..08a3b24 100755 (executable)
 
 
 #include <Elementary.h>
+
+#ifndef WAYLAND
 #include <Ecore_X.h>
 #include <utilX.h>
+#endif
+
 #include <ui-gadget.h>
 #include <vconf.h>
 #include <bundle.h>
@@ -58,6 +62,7 @@ static Eina_Bool _lockd_window_key_down_cb(void *data, int type, void *event)
        return ECORE_CALLBACK_PASS_ON;
 }
 
+#ifndef WAYLAND
 static int
 _lockd_window_check_validate_rect(Ecore_X_Display * dpy, Ecore_X_Window window)
 {
@@ -94,7 +99,9 @@ _lockd_window_check_validate_rect(Ecore_X_Display * dpy, Ecore_X_Window window)
 
        return ret;
 }
+#endif
 
+#ifndef WAYLAND
 static Window get_user_created_window(Window win)
 {
        Atom type_ret = 0;
@@ -127,11 +134,13 @@ static Window get_user_created_window(Window win)
        return xid;
 
 }
+#endif
 
 Eina_Bool
 lockd_window_set_window_property(lockw_data * data, int lock_app_pid,
                                 void *event)
 {
+#ifndef WAYLAND
        Ecore_X_Event_Window_Create *e = event;
        Ecore_X_Window user_window = 0;
        lockw_data *lockw = (lockw_data *) data;
@@ -173,12 +182,15 @@ lockd_window_set_window_property(lockw_data * data, int lock_app_pid,
                        return EINA_TRUE;
                }
        }
+#endif
+
        return EINA_FALSE;
 }
 
 Eina_Bool
 lockd_window_set_window_effect(lockw_data * data, int lock_app_pid, void *event)
 {
+#ifndef WAYLAND
        Ecore_X_Event_Window_Create *e = event;
        Ecore_X_Window user_window = 0;
        int pid = 0;
@@ -206,6 +218,8 @@ lockd_window_set_window_effect(lockw_data * data, int lock_app_pid, void *event)
                        return EINA_TRUE;
                }
        }
+#endif
+
        return EINA_FALSE;
 }
 
@@ -231,6 +245,7 @@ lockd_window_mgr_ready_lock(void *data, lockw_data * lockw,
                LOCKD_ERR("lockw is NULL.");
                return;
        }
+#ifndef WAYLAND
        lockw->h_wincreate =
            ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CREATE, create_cb,
                                    data);
@@ -242,10 +257,12 @@ lockd_window_mgr_ready_lock(void *data, lockw_data * lockw,
        lockw->h_keydown =
            ecore_event_handler_add(ECORE_EVENT_KEY_DOWN,
                                    _lockd_window_key_down_cb, lockw);
+#endif
 }
 
 void lockd_window_mgr_finish_lock(lockw_data * lockw)
 {
+#ifndef WAYLAND
        Ecore_X_Window xwin;
 
        if (lockw == NULL) {
@@ -267,6 +284,7 @@ void lockd_window_mgr_finish_lock(lockw_data * lockw)
                ecore_event_handler_del(lockw->h_keydown);
                lockw->h_keydown = NULL;
        }
+#endif
 }
 
 lockw_data *lockd_window_init(void)
index df41f28..feb358b 100644 (file)
--- a/src/x11.c
+++ b/src/x11.c
 #include <stdio.h>
 #include <stdlib.h>
 
+#ifndef WAYLAND
 #include <X11/Xlib.h>
 #include <X11/Xatom.h>
 #include <X11/Xutil.h>
+#endif
 
 #define DEFAULT_WINDOW_H 1280
 
 void prop_string_set(const char *name, const char *value)
 {
+#ifndef WAYLAND
        Display *d;
        Atom a_name;
        Atom a_UTF8;
@@ -57,10 +60,12 @@ void prop_string_set(const char *name, const char *value)
 
  exit:
        XCloseDisplay(d);
+#endif
 }
 
 void prop_int_set(const char *name, unsigned int val)
 {
+#ifndef WAYLAND
        Display *d;
        Atom a_name;
 
@@ -80,10 +85,12 @@ void prop_int_set(const char *name, unsigned int val)
 
  exit:
        XCloseDisplay(d);
+#endif
 }
 
 void set_window_scale(void)
 {
+#ifndef WAYLAND
        double root_width = 0.0, root_height = 0.0;
        char buf[128] = { 0, };
        Display *disp;
@@ -108,4 +115,5 @@ void set_window_scale(void)
 
        setenv("ELM_SCALE", buf, 1);
        setenv("SCALE_FACTOR", buf, 1);
+#endif
 }
index 4c87285..49ea19e 100755 (executable)
 #include <aul.h>
 #include <dlog.h>
 #include <Ecore.h>
+
+#ifndef WAYLAND
 #include <Ecore_X.h>
+#endif
+
 #include <Evas.h>
 #include <errno.h>
 #include <stdbool.h>
@@ -54,7 +58,7 @@ static struct info {
 int errno;
 
 
-
+#ifndef WAYLAND
 static inline int _get_pid(Ecore_X_Window win)
 {
        int pid;
@@ -80,11 +84,12 @@ static inline int _get_pid(Ecore_X_Window win)
 
        return pid;
 }
-
+#endif
 
 
 bool _set_idlescreen_top(void)
 {
+#ifndef WAYLAND
        Ecore_X_Window win;
 
        int is_top;
@@ -104,6 +109,7 @@ bool _set_idlescreen_top(void)
                xmonitor_info.is_top = is_top;
                _D("set the key of idlescreen_is_top as %d", is_top);
        }
+#endif
 
        return true;
 }
@@ -112,11 +118,13 @@ bool _set_idlescreen_top(void)
 
 static Eina_Bool _create_cb(void *data, int type, void *event)
 {
+#ifndef WAYLAND
        Ecore_X_Event_Window_Create *info = event;
 
        _D("Create a window[%x]", info->win);
 
        ecore_x_window_client_sniff(info->win);
+#endif
 
        return ECORE_CALLBACK_PASS_ON;
 }
@@ -132,11 +140,13 @@ static Eina_Bool _destroy_cb(void *data, int type, void *event)
 
 static Eina_Bool _focus_in_cb(void *data, int type, void *event)
 {
+#ifndef WAYLAND
        Ecore_X_Event_Window_Focus_In *info = event;
 
        _D("Focus in a window[%x]", info->win);
 
        retv_if(false == _set_idlescreen_top(), ECORE_CALLBACK_PASS_ON);
+#endif
 
        return ECORE_CALLBACK_PASS_ON;
 }
@@ -145,9 +155,11 @@ static Eina_Bool _focus_in_cb(void *data, int type, void *event)
 
 static Eina_Bool _focus_out_cb(void *data, int type, void *event)
 {
+#ifndef WAYLAND
        Ecore_X_Event_Window_Focus_Out *info = event;
 
        _D("Focus out a window[%x]", info->win);
+#endif
 
        return ECORE_CALLBACK_PASS_ON;
 }
@@ -156,6 +168,7 @@ static Eina_Bool _focus_out_cb(void *data, int type, void *event)
 
 static inline void _sniff_all_windows(void)
 {
+#ifndef WAYLAND
        Ecore_X_Window root;
        Ecore_X_Window ret;
        struct stack_item *new_item;
@@ -224,6 +237,7 @@ static inline void _sniff_all_windows(void)
                free(item->wins);
                free(item);
        }
+#endif
 
        return;
 }
@@ -232,6 +246,7 @@ static inline void _sniff_all_windows(void)
 
 int xmonitor_init(void)
 {
+#ifndef WAYLAND
        if (ecore_x_composite_query() == EINA_FALSE)
                _D("====> COMPOSITOR IS NOT ENABLED");
 
@@ -276,12 +291,14 @@ Error:
                ecore_event_handler_del(xmonitor_info.focus_out_handler);
                xmonitor_info.focus_out_handler = NULL;
        } else return -EFAULT;
+#endif
 
        return -EFAULT;
 }
 
 void xmonitor_fini(void)
 {
+#ifndef WAYLAND
        ecore_event_handler_del(xmonitor_info.create_handler);
        xmonitor_info.create_handler = NULL;
 
@@ -293,4 +310,5 @@ void xmonitor_fini(void)
 
        ecore_event_handler_del(xmonitor_info.focus_out_handler);
        xmonitor_info.focus_out_handler = NULL;
+#endif
 }