e_policy_visibility: fix crash issue 90/264490/1 accepted/tizen/unified/20210923.133103 submit/tizen/20210923.070124
authorDoyoun Kang <doyoun.kang@samsung.com>
Thu, 23 Sep 2021 06:45:26 +0000 (15:45 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Thu, 23 Sep 2021 06:45:36 +0000 (15:45 +0900)
There was a bug that we set the deleted grab->timer to NULL in _e_vis_client_grab_clear_cb.
We changed code to set grab->timer to NULL before deleting a grab.

Change-Id: Ifa54e47194a84aa491769053a87fe3f5722d738e

src/bin/e_policy_visibility.c

index 61ae365..e57ac52 100644 (file)
@@ -990,10 +990,10 @@ _e_vis_client_grab_cb_timeout(void *data)
 {
    E_Vis_Grab *grab = data;
    VS_INF(grab->vc->ec, "TIMEOUT(%f) Grab %s", e_config->deiconify_pending_timeout, grab->name);
+   grab->timer = NULL;
    grab->deleted = 1;
    _e_vis_client_grab_remove(grab->vc, grab);
 
-   grab->timer = NULL;
    return ECORE_CALLBACK_DONE;
 }
 
@@ -1109,6 +1109,7 @@ _e_vis_client_grab_clear_cb(void *data)
    E_Pol_Vis_Type above_vis_type;
 
    VS_INF(grab->vc->ec, "FORCE CLEAR! Grab %s, cur state:%d", grab->name, grab->vc->state);
+   grab->timer = NULL;
 
    if (grab->vc->state == E_VIS_ICONIFY_STATE_RUNNING_UNICONIFY)
      {
@@ -1119,7 +1120,6 @@ _e_vis_client_grab_clear_cb(void *data)
 
    grab->deleted = 1;
    _e_vis_client_grab_remove(grab->vc, grab);
-   grab->timer = NULL;
 
    return ECORE_CALLBACK_DONE;
 }
@@ -1158,10 +1158,12 @@ _e_vis_client_job_timeout(void *data)
    E_Vis_Job *job = data;
 
    VS_INF(job->vc->ec, "TIMEOUT(%f) JOB %d", e_config->deiconify_pending_timeout, job->type);
+   job->timer = NULL;
+
    /* FIXME delete all grab and evaluate it instead of exec */
    _e_vis_job_exec(&job->entry);
    _e_vis_job_eval();
-   job->timer = NULL;
+
    return ECORE_CALLBACK_DONE;
 }