Fix background launch
[platform/core/appfw/app-core.git] / src / appcore-efl.c
index 46294a1..ff6a0ee 100644 (file)
@@ -187,7 +187,7 @@ static void __finish_wl(void)
 
 static void __set_bg_state(void)
 {
-       if (__init_wl() < 0)
+       if (!tz_policy && __init_wl() < 0)
                return;
 
        tizen_policy_set_background_state(tz_policy, getpid());
@@ -205,7 +205,6 @@ static void __unset_bg_state(void)
        wl_display_roundtrip(dsp);
        bg_state = false;
        _DBG("bg state: %d", bg_state);
-       __finish_wl();
 }
 
 static void __appcore_efl_prepare_to_suspend(void *data)
@@ -422,12 +421,16 @@ static void __do_app(enum app_event event, void *data, bundle * b)
                        first_launch = FALSE;
                } else {
                        _INFO("[APP %d] App already running, raise the window", _pid);
-                       if (bg_state) {
-                               bg_launch = bundle_get_val(b, AUL_SVC_K_BG_LAUNCH);
-                               if (!bg_launch || strcmp(bg_launch, "enable"))
+                       bg_launch = bundle_get_val(b, AUL_SVC_K_BG_LAUNCH);
+                       if (bg_launch && strcmp(bg_launch, "enable") == 0) {
+                               if (!bg_state && ui->state != AS_RUNNING)
+                                       __set_bg_state();
+                       } else {
+                               if (bg_state)
                                        __unset_bg_state();
                        }
-                       wl_raise_win();
+                       if (!bg_state)
+                               wl_raise_win();
                }
                LOG(LOG_DEBUG, "LAUNCH", "[%s:Application:reset:done]",
                    ui->name);
@@ -822,6 +825,7 @@ static void __after_loop(struct ui_priv *ui)
                ecore_event_handler_del(ui->hlower);
 
        __appcore_timer_del(ui);
+       __finish_wl();
 
        elm_shutdown();