E_Output *e_output;
E_Output_Hook *dpms_change_hook;
E_Dpms_Mode mode;
+ int request_count;
} E_Dpms;
static Eldbus_Message *
dpms = (E_Dpms *)data;
- delay_timer = NULL;
-
e_output_dpms = e_output_dpms_get(dpms->e_output);
if (e_output_dpms != dpms->mode)
{
dpms->mode = e_output_dpms;
}
- tizen_dpms_manager_send_set_state(gresource, dpms->mode, E_DPMS_MANAGER_ERROR_NONE);
- INF("DPMS:tizen_dpms_manager send set event by timer(res:%p, output:%p, dpms:%d)", gresource, dpms->e_output, dpms->mode);
+ if (dpms->request_count != 0)
+ {
+ tizen_dpms_manager_send_set_state(gresource, dpms->mode, E_DPMS_MANAGER_ERROR_NONE);
+ INF("DPMS:tizen_dpms_manager send set event by timer(res:%p, output:%p, dpms:%d)", gresource, dpms->e_output, dpms->mode);
+ dpms->request_count--;
+ }
- return ECORE_CALLBACK_CANCEL;
+ if (dpms->request_count == 0)
+ {
+ delay_timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+ else
+ return ECORE_CALLBACK_RENEW;
}
static void
e_output_dpms = e_output_dpms_get(output);
- if (delay_timer)
- ecore_timer_del(delay_timer);
- delay_timer = NULL;
- INF("DPMS:tizen_dpms_manager set dpms async cb(res:%p, output:%p, dpms:%d)",
- gresource, dpms->e_output, e_output_dpms);
- tizen_dpms_manager_send_set_state(gresource, e_output_dpms, E_DPMS_MANAGER_ERROR_NONE);
+ if (dpms->request_count != 0)
+ {
+ INF("DPMS:tizen_dpms_manager set dpms async cb(res:%p, output:%p, dpms:%d)",
+ gresource, dpms->e_output, e_output_dpms);
+ tizen_dpms_manager_send_set_state(gresource, e_output_dpms, E_DPMS_MANAGER_ERROR_NONE);
+ dpms->request_count--;
+ }
+
+ if (dpms->request_count == 0)
+ {
+ if (delay_timer)
+ ecore_timer_del(delay_timer);
+ delay_timer = NULL;
+ }
}
static E_Dpms *
ret = e_output_dpms_set(dpms->e_output, mode);
if (ret)
- INF("DPMS:tizen_dpms_manager set dpms(res:%p, output:%p, dpms:%d, %d)", resource, dpms->e_output, mode, dpms->mode);
+ {
+ INF("DPMS:tizen_dpms_manager set dpms(res:%p, output:%p, dpms:%d, %d)", resource, dpms->e_output, mode, dpms->mode);
+ dpms->request_count++;
+ }
else
{
- ERR("DPMS:tizen_dpms_manager set dpms fail(res:%p, output:%p, dpms=%d)", resource, dpms->e_output, mode);
- ecore_timer_del(delay_timer);
- delay_timer = NULL;
- tizen_dpms_manager_send_set_state(resource, dpms->mode, E_DPMS_MANAGER_ERROR_INVALID_PERMISSION);
+ if (e_output_dpms_get(dpms->e_output) == dpms)
+ tizen_dpms_manager_send_set_state(resource, dpms->mode, E_DPMS_MANAGER_ERROR_ALREADY_DONE);
+ else
+ tizen_dpms_manager_send_set_state(resource, dpms->mode, E_DPMS_MANAGER_ERROR_INVALID_PERMISSION);
+
+ ERR("DPMS:tizen_dpms_manager set dpms fail(res:%p, output:%p, dpms:%d, %d)",
+ resource, dpms->e_output, mode, dpms->mode);
+
+ if (dpms->request_count == 0)
+ {
+ ecore_timer_del(delay_timer);
+ delay_timer = NULL;
+ }
}
}