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;
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 */
Name: libwidget
Summary: Widget development library
-Version: 1.3.0
+Version: 1.3.1
Release: 1
Group: Applications/Core Applications
License: Flora-1.1
}
}
-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) {
}
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);
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 */
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 */
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) {
evas_event_callback_del(info->e, EVAS_CALLBACK_RENDER_PRE, pre_render_cb);
}
- info->flags.field.deleted = 1;
+ info->deleted = 1;
info->ee = NULL;
}
}
#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);