From: hyunho Date: Tue, 5 Jun 2018 08:22:13 +0000 (+0900) Subject: Handling manual render in pre visibility X-Git-Tag: submit/tizen/20180607.021807~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ebb924697e63e294a5a6ed05d1085d681233db40;p=platform%2Fcore%2Fappfw%2Fwidget-viewer.git Handling manual render in pre visibility Change-Id: I65b1464e4abfbe4d48476eadf86879193db891c3 Signed-off-by: hyunho --- diff --git a/watch-control/src/control.c b/watch-control/src/control.c index b4194fbe..52252c9f 100755 --- a/watch-control/src/control.c +++ b/watch-control/src/control.c @@ -56,8 +56,6 @@ #define DEVICED_PATH_DISPLAY "/Org/Tizen/System/DeviceD/Display" #define DEVICED_INTERFACE_DISPLAY "org.tizen.system.deviced.display" -#define SIGNAL_LCD_ON "LCDOn" - static int __watch_viewer_initialized = 0; static int __watch_size_policy = WATCH_POLICY_HINT_EXPAND; @@ -75,7 +73,7 @@ static aul_app_com_connection_h __conn_dead_signal; static unsigned int __watch_rid; static bool __manual_render; static guint __manual_render_timer; -static bool __iconified = false; +static Ecore_Event_Handler *__pre_visibility; static bool __is_bound = false; static int __viewer_visibility = AUL_SCREEN_STATUS_RESUME; @@ -88,8 +86,6 @@ struct dead_cb_s { GQueue *__pending_queue; static int __change_viewer_visibility(int visibility, bool update_cur_state); static int __change_visibility(int visibility); -static GDBusConnection *__gdbus_conn; -static guint __lcd_subscribe_id; static aul_app_com_connection_h __conn_launch_signal; static int __listen_launch_signal(void); @@ -236,92 +232,17 @@ static void __manual_render_finish(void) } } -static Eina_Bool __iconify_state_changed(void *data, int type, void *event) +static Eina_Bool __window_on_pre_visibility(void *data, int type, void *event) { - Ecore_Wl2_Event_Window_Iconify_State_Change *ev = - (Ecore_Wl2_Event_Window_Iconify_State_Change *)event; - Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(__win)); - - if(ev->win != - ecore_wl2_window_id_get(ecore_evas_wayland2_window_get(ee))) - return ECORE_CALLBACK_PASS_ON; - - LOGI("Iconify state changed, win(%d) is %s", - ev->win, - ev->iconified ? "iconified" : "uniconified"); + Ecore_Wl2_Event_Window_Pre_Visibility_Change *ev = event; - if (ev->iconified == EINA_FALSE && __iconified) { + if (ev && ev->type == ECORE_WL2_WINDOW_VISIBILITY_TYPE_PRE_UNOBSCURED) { + LOGD("[__WINDOW_PRE_VISIBILITY_CHANGE__] win_id(%u)", + (unsigned int)ev->win); __manual_render_start(); - __iconified = false; - } else if (ev->iconified == EINA_TRUE) { - __iconified = true; } - return ECORE_CALLBACK_PASS_ON; -} - -static void __lcd_on_signal_handler(GDBusConnection *connection, - const gchar *sender_name, - const gchar *object_path, - const gchar *interface_name, - const gchar *signal_name, - GVariant *parameters, - gpointer user_data) -{ - LOGI("LCD ON !!"); - __manual_render_start(); -} - -static int __dbus_init(void) -{ - GError *err = NULL; - - if (__gdbus_conn) { - LOGW("already initialized"); - return -1; - } - - __gdbus_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &err); - if (__gdbus_conn == NULL) { - _E("Failed to connect to the D-BUS daemon: %s", - err->message); - g_error_free(err); - return -1; - } - - return 0; -} - -int __listen_lcd_status_signal() -{ - GError *err = NULL; - - _D("listen lcd_status_signal"); - - if (__dbus_init() != 0) - return -1; - - __lcd_subscribe_id = g_dbus_connection_signal_subscribe(__gdbus_conn, - NULL, - DEVICED_INTERFACE_DISPLAY, - SIGNAL_LCD_ON, - DEVICED_PATH_DISPLAY, - NULL, - G_DBUS_SIGNAL_FLAGS_NONE, - __lcd_on_signal_handler, - NULL, - NULL); - if (__lcd_subscribe_id == 0) { - _E("g_dbus_connection_signal_subscribe() is failed."); - if (__gdbus_conn) { - g_object_unref(__gdbus_conn); - __gdbus_conn = NULL; - } - } - - g_clear_error(&err); - - return 0; + return ECORE_CALLBACK_RENEW; } static int __watch_viewer_init(Evas_Object *win) @@ -340,11 +261,11 @@ static int __watch_viewer_init(Evas_Object *win) __win_resized(NULL, NULL, win, NULL); /* init */ evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, __win_resized, NULL); - ecore_event_handler_add(ECORE_WL2_EVENT_WINDOW_ICONIFY_STATE_CHANGE, - __iconify_state_changed, NULL); + __pre_visibility = ecore_event_handler_add( + ECORE_WL2_EVENT_WINDOW_PRE_VISIBILITY_CHANGE, + __window_on_pre_visibility, NULL); __manual_render = false; __watch_viewer_initialized = 1; - __listen_lcd_status_signal(); return 0; } @@ -358,17 +279,8 @@ static void __watch_viewer_fini() screen_connector_toolkit_evas_stop_visibility_notify(); screen_connector_toolkit_evas_fini(SCREEN_CONNECTOR_SCREEN_TYPE_WATCH); - - if (__lcd_subscribe_id != 0) { - g_dbus_connection_signal_unsubscribe( - __gdbus_conn, __lcd_subscribe_id); - __lcd_subscribe_id = 0; - } - - if (__gdbus_conn) { - g_object_unref(__gdbus_conn); - __gdbus_conn = NULL; - } + if (__pre_visibility) + ecore_event_handler_del(__pre_visibility); } API int watch_manager_init(Evas_Object *win)