void *timeout_data;
double timeout;
+ bool enable;
};
static Eina_Bool _timer_cb(void *data)
handle = data;
+ if (!handle->enable)
+ return ECORE_CALLBACK_CANCEL;
+
handle->timeout_cb(handle->timeout_data, 0, NULL);
handle->timer = NULL;
handle = data;
+ if (!handle->enable)
+ return ECORE_CALLBACK_PASS_ON;
+
handle->event_cb(handle->event_data, type, event);
timeout_handler_reset(handle);
return ECORE_CALLBACK_PASS_ON;
}
+void timeout_handler_enable(struct timeout_handler *handle, bool enable)
+{
+ handle->enable = enable;
+
+ if (!enable) {
+ ecore_timer_del(handle->timer);
+ handle->timer = NULL;
+ }
+}
+
void timeout_handler_reset(struct timeout_handler *handle)
{
if (!handle) {
handle->timeout_cb = timeout_cb;
handle->timeout_data = timeout_data;
handle->timeout = timeout;
+ handle->enable = false;
return handle;
_viewer_show(priv, DIR_NONE);
+ timeout_handler_enable(priv->timeout, true);
timeout_handler_reset(priv->timeout);
evas_object_show(priv->base);
_viewer_hide(priv);
+ timeout_handler_enable(priv->timeout, false);
+
evas_object_hide(priv->base);
}