move wl compositor function for creating data sources to be external
This commit is contained in:
parent
0f070c6683
commit
aa5788175b
|
@ -384,40 +384,6 @@ _e_comp_wl_data_device_cb_unbind(struct wl_resource *resource)
|
||||||
eina_hash_del_by_key(e_comp->wl_comp_data->mgr.data_resources, &resource);
|
eina_hash_del_by_key(e_comp->wl_comp_data->mgr.data_resources, &resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_e_comp_wl_data_manager_cb_source_create(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t id EINA_UNUSED)
|
|
||||||
{
|
|
||||||
E_Comp_Wl_Data_Source *source;
|
|
||||||
|
|
||||||
DBG("Data Manager Source Create");
|
|
||||||
|
|
||||||
source = E_NEW(E_Comp_Wl_Data_Source, 1);
|
|
||||||
if (!source)
|
|
||||||
{
|
|
||||||
wl_resource_post_no_memory(resource);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
wl_signal_init(&source->destroy_signal);
|
|
||||||
source->target = _e_comp_wl_data_source_target_send;
|
|
||||||
source->send = _e_comp_wl_data_source_send_send;
|
|
||||||
source->cancelled = _e_comp_wl_data_source_cancelled_send;
|
|
||||||
|
|
||||||
source->resource =
|
|
||||||
wl_resource_create(client, &wl_data_source_interface, 1, id);
|
|
||||||
if (!source->resource)
|
|
||||||
{
|
|
||||||
ERR("Could not create data source resource: %m");
|
|
||||||
free(source);
|
|
||||||
wl_resource_post_no_memory(resource);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
wl_resource_set_implementation(source->resource,
|
|
||||||
&_e_data_source_interface, source,
|
|
||||||
_e_comp_wl_data_source_cb_resource_destroy);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_comp_wl_data_manager_cb_device_get(struct wl_client *client, struct wl_resource *manager_resource, uint32_t id, struct wl_resource *seat_resource EINA_UNUSED)
|
_e_comp_wl_data_manager_cb_device_get(struct wl_client *client, struct wl_resource *manager_resource, uint32_t id, struct wl_resource *seat_resource EINA_UNUSED)
|
||||||
{
|
{
|
||||||
|
@ -442,7 +408,7 @@ _e_comp_wl_data_manager_cb_device_get(struct wl_client *client, struct wl_resour
|
||||||
|
|
||||||
static const struct wl_data_device_manager_interface _e_manager_interface =
|
static const struct wl_data_device_manager_interface _e_manager_interface =
|
||||||
{
|
{
|
||||||
_e_comp_wl_data_manager_cb_source_create,
|
(void*)e_comp_wl_data_manager_source_create,
|
||||||
_e_comp_wl_data_manager_cb_device_get
|
_e_comp_wl_data_manager_cb_device_get
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -818,3 +784,38 @@ e_comp_wl_data_find_for_client(struct wl_client *client)
|
||||||
{
|
{
|
||||||
return eina_hash_find(e_comp->wl_comp_data->mgr.data_resources, &client);
|
return eina_hash_find(e_comp->wl_comp_data->mgr.data_resources, &client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
E_API E_Comp_Wl_Data_Source *
|
||||||
|
e_comp_wl_data_manager_source_create(struct wl_client *client, struct wl_resource *resource, uint32_t id)
|
||||||
|
{
|
||||||
|
E_Comp_Wl_Data_Source *source;
|
||||||
|
|
||||||
|
DBG("Data Manager Source Create");
|
||||||
|
|
||||||
|
source = E_NEW(E_Comp_Wl_Data_Source, 1);
|
||||||
|
if (!source)
|
||||||
|
{
|
||||||
|
wl_resource_post_no_memory(resource);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
wl_signal_init(&source->destroy_signal);
|
||||||
|
source->target = _e_comp_wl_data_source_target_send;
|
||||||
|
source->send = _e_comp_wl_data_source_send_send;
|
||||||
|
source->cancelled = _e_comp_wl_data_source_cancelled_send;
|
||||||
|
|
||||||
|
source->resource =
|
||||||
|
wl_resource_create(client, &wl_data_source_interface, 1, id);
|
||||||
|
if (!source->resource)
|
||||||
|
{
|
||||||
|
ERR("Could not create data source resource: %m");
|
||||||
|
free(source);
|
||||||
|
wl_resource_post_no_memory(resource);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
wl_resource_set_implementation(source->resource,
|
||||||
|
&_e_data_source_interface, source,
|
||||||
|
_e_comp_wl_data_source_cb_resource_destroy);
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
|
|
@ -57,5 +57,6 @@ EINTERN void e_comp_wl_data_device_keyboard_focus_set(void);
|
||||||
EINTERN Eina_Bool e_comp_wl_data_manager_init(void);
|
EINTERN Eina_Bool e_comp_wl_data_manager_init(void);
|
||||||
EINTERN void e_comp_wl_data_manager_shutdown(void);
|
EINTERN void e_comp_wl_data_manager_shutdown(void);
|
||||||
EINTERN struct wl_resource *e_comp_wl_data_find_for_client(struct wl_client *client);
|
EINTERN struct wl_resource *e_comp_wl_data_find_for_client(struct wl_client *client);
|
||||||
|
E_API E_Comp_Wl_Data_Source *e_comp_wl_data_manager_source_create(struct wl_client *client, struct wl_resource *resource, uint32_t id);
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue