From aa5788175b53c0cedd4e059585bb8165df985af1 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 6 Aug 2015 18:57:40 -0400 Subject: [PATCH] move wl compositor function for creating data sources to be external --- src/bin/e_comp_wl_data.c | 71 ++++++++++++++++++++-------------------- src/bin/e_comp_wl_data.h | 1 + 2 files changed, 37 insertions(+), 35 deletions(-) diff --git a/src/bin/e_comp_wl_data.c b/src/bin/e_comp_wl_data.c index 2c53bd640..1a6b3e5f0 100644 --- a/src/bin/e_comp_wl_data.c +++ b/src/bin/e_comp_wl_data.c @@ -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); } -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 _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 = { - _e_comp_wl_data_manager_cb_source_create, + (void*)e_comp_wl_data_manager_source_create, _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); } + +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; +} diff --git a/src/bin/e_comp_wl_data.h b/src/bin/e_comp_wl_data.h index 5fc56c2f7..5185e14c1 100644 --- a/src/bin/e_comp_wl_data.h +++ b/src/bin/e_comp_wl_data.h @@ -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 void e_comp_wl_data_manager_shutdown(void); 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