Sync with the latest tizen 2.x 27/48227/1
authorSung-jae Park <nicesj.park@samsung.com>
Wed, 16 Sep 2015 11:41:40 +0000 (20:41 +0900)
committerSung-jae Park <nicesj.park@samsung.com>
Wed, 16 Sep 2015 11:41:40 +0000 (20:41 +0900)
Change-Id: Id75f4c8e6c9def018780ae889500cc21fbd91683

include/binder.h
packaging/libwidget.spec
src/binder.c
src/virtual_window.c
src/virtual_window_wayland.c

index b93e675..7c1ced0 100644 (file)
@@ -56,8 +56,10 @@ typedef struct virtual_window_info {
                        unsigned int is_gbar: 1;
                        unsigned int on_hold_before_down: 1;
                        unsigned int on_scroll_before_down: 1;
+                       unsigned int auto_align: 1;
+                       unsigned int gl_backend: 1;
 
-                       unsigned int reserved: 28;
+                       unsigned int reserved: 26;
                } field;
        } flags;
 } *vwin_info_t;
@@ -66,9 +68,11 @@ extern int binder_widget_send_updated(const char *pkgname, const char *id, widge
 extern int binder_widget_update_extra_info(const char *id, const char *content, const char *title, const char *icon, const char *name);
 extern const char *binder_widget_find_pkgname(const char *uri);
 extern Ecore_Evas *binder_ecore_evas_new(vwin_info_t info);
-extern int binder_widget_auto_align(void);
+extern int binder_widget_auto_align(vwin_info_t info);
 
 #define GL_ENGINE_X11 "opengl_x11"
 #define GL_ENGINE     "opengl"
+#define ENGINE_3D     "3d"
+#define AUTO_ALIGN_ENGINE "auto_align"
 
 /* End of a file */
index 8a6303d..054273d 100644 (file)
@@ -2,7 +2,7 @@
 
 Name: libwidget
 Summary: Widget development library
-Version: 1.3.0
+Version: 1.3.1
 Release: 1
 Group: Applications/Core Applications
 License: Flora-1.1
index c71329a..7e15c62 100644 (file)
@@ -515,27 +515,13 @@ static void free_fb(void *data, void *ptr)
        }
 }
 
-static inline int check_gl_engine(const char *engine)
-{
-       /**
-        * @todo
-        * If the "engine" string going to be changed to more complicated formatted string,
-        * We should replace this with sytanx recognizer (parser).
-        */
-       return !!strcasestr(engine, GL_ENGINE);
-}
-
 Ecore_Evas *binder_ecore_evas_new(vwin_info_t info)
 {
-       const char *engine;
        Ecore_Evas *ee = NULL;
 
        load_ecore_evas_function();
 
-       engine = elm_config_accel_preference_get();
-
-       DbgPrint("Preferred engine: %s (%s or %s)\n", engine, GL_ENGINE, GL_ENGINE_X11);
-       if (engine && check_gl_engine(engine)) {
+       if (info->flags.field.gl_backend) {
                if (s_info.alloc_canvas_with_pixmap) {
                        ee = s_info.alloc_canvas_with_pixmap(NULL, 0u, 0, 0, info->w, info->h, alloc_pixmap_cb, free_pixmap_cb, info);
                        if (!ee) {
@@ -545,7 +531,7 @@ Ecore_Evas *binder_ecore_evas_new(vwin_info_t info)
        }
 
        if (!ee) {
-               if (!widget_conf_auto_align() && s_info.alloc_canvas_with_stride) {
+               if (!binder_widget_auto_align(info) && s_info.alloc_canvas_with_stride) {
                        ee = s_info.alloc_canvas_with_stride(info->w, info->h, alloc_stride_fb, free_fb, info);
                } else if (s_info.alloc_canvas) {
                        ee = s_info.alloc_canvas(info->w, info->h, alloc_fb, free_fb, info);
@@ -555,11 +541,11 @@ Ecore_Evas *binder_ecore_evas_new(vwin_info_t info)
        return ee;
 }
 
-int binder_widget_auto_align(void)
+int binder_widget_auto_align(vwin_info_t info)
 {
        load_ecore_evas_function();
 
-       return widget_conf_auto_align() || !s_info.alloc_canvas_with_stride;
+       return (info && info->flags.field.auto_align) || widget_conf_auto_align() || !s_info.alloc_canvas_with_stride;
 }
 
 /* End of a file */
index 1d91878..e9103a8 100644 (file)
@@ -986,6 +986,28 @@ static void ecore_evas_free_cb(Ecore_Evas *ee)
        info->ee = NULL;
 }
 
+static inline void check_engine(vwin_info_t info)
+{
+       const char *engine;
+
+       engine = elm_config_accel_preference_get();
+       if (!engine) {
+               DbgPrint("Preferred engine is not specified\n");
+               return;
+       }
+
+       /**
+        * @todo
+        * If the "engine" string going to be changed to more complicated formatted string,
+        * We should replace this with sytanx recognizer (parser).
+        */
+       DbgPrint("Preferred engine: [%s] (%s or %s)\n", engine, GL_ENGINE, GL_ENGINE_X11);
+       info->flags.field.gl_backend = (!!strcasestr(engine, GL_ENGINE) || !!strcasestr(engine, ENGINE_3D));
+       info->flags.field.auto_align = !!strcasestr(engine, AUTO_ALIGN_ENGINE);
+       DbgPrint("Manual - Auto Align: %s\n", info->flags.field.auto_align ? "on" : "off");
+       return;
+}
+
 #ifdef WIDGET_FEATURE_GBAR_SUPPORTED
 PUBLIC Evas *widget_get_evas(const char *id, int is_gbar)
 #else /* WIDGET_FEATURE_GBAR_SUPPORTED */
@@ -1028,11 +1050,13 @@ PUBLIC Evas *widget_get_evas(const char *id)
        info->flags.field.is_gbar = 0;
 #endif /* WIDGET_FEATURE_GBAR_SUPPORTED */
 
+       check_engine(info);
+
        /**
         * Acquire a buffer for canvas.
         */
        info->handle = widget_create_buffer(info->id, info->flags.field.is_gbar,
-                       binder_widget_auto_align(),
+                       binder_widget_auto_align(info),
                        event_handler_cb, info);
 
        if (!info->handle) {
index d6dc83e..424d8cd 100644 (file)
@@ -691,7 +691,7 @@ static void ecore_evas_free_cb(Ecore_Evas *ee)
                evas_event_callback_del(info->e, EVAS_CALLBACK_RENDER_PRE, pre_render_cb);
        }
 
-       info->flags.field.deleted = 1;
+       info->deleted = 1;
        info->ee = NULL;
 }
 
@@ -732,15 +732,15 @@ PUBLIC Evas *widget_get_evas(const char *id)
        }
 
 #ifdef WIDGET_FEATURE_GBAR_SUPPORTED
-       info->flags.field.is_gbar = is_gbar;
+       info->is_gbar = is_gbar;
 #else
-       info->flags.field.is_gbar = 0;
+       info->is_gbar = 0;
 #endif /* WIDGET_FEATURE_GBAR_SUPPORTED */
 
        /**
         * Acquire a buffer for canvas.
         */
-       info->handle = widget_create_buffer(info->id, info->flags.field.is_gbar,
+       info->handle = widget_create_buffer(info->id, info->is_gbar,
                        binder_widget_auto_align(),
                        event_handler_cb, info);