static Eina_Hash *clients_buffer_hash = NULL;
static Eina_List *handlers = NULL;
static double _last_event_time = 0.0;
+static E_Client *cursor_timer_ec = NULL;
/* local functions */
static void
e_pointer_hide(e_comp->pointer);
e_comp_wl->ptr.hide_tmr = NULL;
+ cursor_timer_ec = NULL;
if (!ec) return EINA_FALSE;
if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE;
{
if (e_pointer_is_hidden(e_comp->pointer))
return;
- else
- {
- if (e_comp_wl->ptr.hide_tmr)
- {
- ecore_timer_interval_set(e_comp_wl->ptr.hide_tmr, e_config->cursor_timer_interval);
- ecore_timer_reset(e_comp_wl->ptr.hide_tmr);
- }
- else
- e_comp_wl->ptr.hide_tmr = ecore_timer_add(e_config->cursor_timer_interval, _e_comp_wl_cursor_timer, ec);
- }
+ if (e_comp_wl->ptr.hide_tmr)
+ ecore_timer_del(e_comp_wl->ptr.hide_tmr);
+ cursor_timer_ec = ec;
+ e_comp_wl->ptr.hide_tmr = ecore_timer_add(e_config->cursor_timer_interval, _e_comp_wl_cursor_timer, ec);
}
e_comp_wl->ptr.ec = ec;
}
}
+ if (cursor_timer_ec == ec)
+ {
+ E_FREE_FUNC(e_comp_wl->ptr.hide_tmr, ecore_timer_del);
+ cursor_timer_ec = NULL;
+ }
+
if (e_object_is_del(E_OBJECT(ec))) return;
if (!ec->comp_data->surface) return;
if (e_comp_wl->ptr.hide_tmr)
{
- ecore_timer_interval_set(e_comp_wl->ptr.hide_tmr, e_config->cursor_timer_interval);
- ecore_timer_reset(e_comp_wl->ptr.hide_tmr);
+ if (cursor_timer_ec == ec)
+ {
+ ecore_timer_interval_set(e_comp_wl->ptr.hide_tmr, e_config->cursor_timer_interval);
+ ecore_timer_reset(e_comp_wl->ptr.hide_tmr);
+ }
+ else
+ {
+ ecore_timer_del(e_comp_wl->ptr.hide_tmr);
+ cursor_timer_ec = ec;
+ e_comp_wl->ptr.hide_tmr = ecore_timer_add(e_config->cursor_timer_interval, _e_comp_wl_cursor_timer, ec);
+ }
}
else
- e_comp_wl->ptr.hide_tmr = ecore_timer_add(e_config->cursor_timer_interval, _e_comp_wl_cursor_timer, ec);
+ {
+ cursor_timer_ec = ec;
+ e_comp_wl->ptr.hide_tmr = ecore_timer_add(e_config->cursor_timer_interval, _e_comp_wl_cursor_timer, ec);
+ }
}
}
if (e_comp_wl->ptr.hide_tmr)
{
- ecore_timer_interval_set(e_comp_wl->ptr.hide_tmr, e_config->cursor_timer_interval);
- ecore_timer_reset(e_comp_wl->ptr.hide_tmr);
+ if (!cursor_timer_ec)
+ {
+ ecore_timer_interval_set(e_comp_wl->ptr.hide_tmr, e_config->cursor_timer_interval);
+ ecore_timer_reset(e_comp_wl->ptr.hide_tmr);
+ }
+ else
+ {
+ ecore_timer_del(e_comp_wl->ptr.hide_tmr);
+ cursor_timer_ec = NULL;
+ e_comp_wl->ptr.hide_tmr = ecore_timer_add(e_config->cursor_timer_interval, _e_comp_wl_cursor_timer, NULL);
+ }
}
else
- e_comp_wl->ptr.hide_tmr = ecore_timer_add(e_config->cursor_timer_interval, _e_comp_wl_cursor_timer, NULL);
+ {
+ cursor_timer_ec = NULL;
+ e_comp_wl->ptr.hide_tmr = ecore_timer_add(e_config->cursor_timer_interval, _e_comp_wl_cursor_timer, NULL);
+ }
}
return ECORE_CALLBACK_RENEW;
if (e_comp_wl->fd_hdlr) ecore_main_fd_handler_del(e_comp_wl->fd_hdlr);
E_FREE_FUNC(e_comp_wl->ptr.hide_tmr, ecore_timer_del);
+ cursor_timer_ec = NULL;
/* free allocated data structure */
free(e_comp_wl);
}
}
+ if (cursor_timer_ec == ec)
+ {
+ E_FREE_FUNC(e_comp_wl->ptr.hide_tmr, ecore_timer_del);
+ cursor_timer_ec = NULL;
+ }
+
e_pixmap_cdata_set(ec->pixmap, NULL);
E_FREE(ec->comp_data);