Revert "Revert "Add buffer changed event filter"" 44/134544/3
authorHyunho Kang <hhstark.kang@samsung.com>
Thu, 25 May 2017 10:36:43 +0000 (19:36 +0900)
committerHyunho Kang <hhstark.kang@samsung.com>
Mon, 19 Jun 2017 06:50:41 +0000 (15:50 +0900)
This reverts commit ccbbd8ee1c6b87fe36907ca4b4d6f3fd56c62ace.

Change-Id: I7d9b4d2143bae2a17d0e28ffb51f24514294b2bf
Signed-off-by: Hyunho Kang <hhstark.kang@samsung.com>
screen_connector_watcher/include/screen_connector_watcher.h
screen_connector_watcher/src/screen_connector_trs.c
screen_connector_watcher/src/screen_connector_watcher.c
screen_connector_watcher_evas/include/screen_connector_watcher_evas.h
screen_connector_watcher_evas/src/screen_connector_watcher_evas.c

index 31d6b85..ca82edc 100644 (file)
 extern "C" {
 #endif
 
+typedef enum {
+       SCREEN_CONNECTOR_CHANGED_EVENT_FILTER_NONE = TIZEN_REMOTE_SURFACE_CHANGED_BUFFER_EVENT_FILTER_NONE,
+       SCREEN_CONNECTOR_CHANGED_EVENT_FILTER_TBM = TIZEN_REMOTE_SURFACE_CHANGED_BUFFER_EVENT_FILTER_TBM,
+       SCREEN_CONNECTOR_CHANGED_EVENT_FILTER_IMAGE_FILE = TIZEN_REMOTE_SURFACE_CHANGED_BUFFER_EVENT_FILTER_IMAGE_FILE,
+       SCREEN_CONNECTOR_CHANGED_EVENT_FILTER_ALL =
+               TIZEN_REMOTE_SURFACE_CHANGED_BUFFER_EVENT_FILTER_TBM | TIZEN_REMOTE_SURFACE_CHANGED_BUFFER_EVENT_FILTER_IMAGE_FILE,
+} screen_connector_changed_event_filter_type;
+
 typedef void (*screen_connector_watcher_added_cb)(const char *appid, const char *instance_id, const int pid, void *data);
 typedef void (*screen_connector_watcher_removed_cb)(const char *appid, const char *instance_id, const int pid, void *data);
 typedef void (*screen_connector_watcher_update_cb)(struct tizen_remote_surface *trs, uint32_t type, struct wl_buffer *tbm,
@@ -53,6 +61,8 @@ int screen_connector_watcher_set_resource_id(screen_connector_watcher_h h, int r
 struct tizen_remote_surface *screen_connector_watcher_get_trs(screen_connector_watcher_h h);
 screen_connector_watcher_h screen_connector_watcher_create_handle(char *id, int pid, screen_connector_watcher_ops *ops, void *data);
 int screen_connector_watcher_redirect_surface(screen_connector_info_h info);
+int screen_connector_watcher_set_changed_event_filter(screen_connector_watcher_h h,
+               screen_connector_changed_event_filter_type type);
 
 #ifdef __cplusplus
 }
index fedb303..548fcc1 100644 (file)
@@ -72,7 +72,7 @@ int screen_connector_trs_init(void)
                if (!strcmp(global->interface, "tizen_remote_surface_manager")) {
                        __rsm = wl_registry_bind(registry, global->id,
                                        &tizen_remote_surface_manager_interface,
-                                       global->version < 4 ? global->version : 4);
+                                       global->version < 5 ? global->version : 5);
                }
        }
 
index 02bd07b..d4653a7 100644 (file)
@@ -43,6 +43,7 @@ struct _screen_connector_watcher_h {
        void *data;
        GHashTable *info_table;
        aul_screen_viewer_h aul_handle;
+       screen_connector_changed_event_filter_type changed_filter;
 };
 
 struct _screen_connector_info_h {
@@ -54,6 +55,7 @@ struct _screen_connector_info_h {
        struct tizen_remote_surface *surface;
        bool renderable;
        void *data;
+       screen_connector_changed_event_filter_type changed_filter;
 };
 
 static void __buffer_updated(void *data, struct tizen_remote_surface *trs, struct wl_buffer *buffer, uint32_t time)
@@ -106,6 +108,8 @@ EXPORT_API int screen_connector_watcher_redirect_surface(screen_connector_info_h
        LOGD("resource_id : %d, (%p)", info->surface_id, info->surface);
        tizen_remote_surface_add_listener(info->surface, &__rs_listener, info);
        tizen_remote_surface_redirect(info->surface);
+       tizen_remote_surface_set_changed_buffer_event_filter(info->surface, info->changed_filter);
+       LOGD("set filter [%d] for [%s]", info->changed_filter, info->instance_id);
 
        return 0;
 }
@@ -158,6 +162,7 @@ static void __aul_screen_viewer_cb(const char *appid, const char *instance_id,
        info->ops = watcher_h->ops;
        info->data = watcher_h->data;
        info->renderable = false;
+       info->changed_filter = watcher_h->changed_filter;
 
        if (event_type == AUL_SCREEN_CONNECTOR_EVENT_TYPE_ADD) {
 
@@ -228,6 +233,7 @@ EXPORT_API screen_connector_watcher_h screen_connector_watcher_add(screen_connec
                LOGE("watcher_h calloc fail");
                return NULL;
        }
+       watcher_h->changed_filter = SCREEN_CONNECTOR_CHANGED_EVENT_FILTER_ALL;
        watcher_h->data = data;
        watcher_h->ops = ops;
        watcher_h->info_table = g_hash_table_new_full(g_str_hash,
@@ -301,3 +307,27 @@ EXPORT_API void *screen_connector_watcher_get_user_data(screen_connector_info_h
 {
        return h->data;
 }
+
+EXPORT_API int screen_connector_watcher_set_changed_event_filter(screen_connector_watcher_h h,
+               screen_connector_changed_event_filter_type type)
+{
+       GHashTableIter iter;
+       gpointer key, value;
+       screen_connector_info_h info;
+
+       if (h == NULL || h->info_table == NULL) {
+               LOGE("Invalid param");
+               return -1;
+       }
+
+       g_hash_table_iter_init(&iter, h->info_table);
+       while (g_hash_table_iter_next(&iter, &key, &value)) {
+               info = (screen_connector_info_h)value;
+               LOGD("set filter [%d] for [%s]", type, info->instance_id);
+               tizen_remote_surface_set_changed_buffer_event_filter(info->surface, type);
+       }
+
+       h->changed_filter = type;
+
+       return 0;
+}
index 75959dd..97e4528 100644 (file)
@@ -36,6 +36,13 @@ extern "C" {
  * @addtogroup CAPI_SCREEN_CONNECTOR_WATCHER_EVAS_MODULE
  * @{
  */
+typedef enum {
+       SCREEN_CONNECTOR_EVAS_CHANGED_EVENT_FILTER_NONE = TIZEN_REMOTE_SURFACE_CHANGED_BUFFER_EVENT_FILTER_NONE,
+       SCREEN_CONNECTOR_EVAS_CHANGED_EVENT_FILTER_TBM = TIZEN_REMOTE_SURFACE_CHANGED_BUFFER_EVENT_FILTER_TBM,
+       SCREEN_CONNECTOR_EVAS_CHANGED_EVENT_FILTER_IMAGE_FILE = TIZEN_REMOTE_SURFACE_CHANGED_BUFFER_EVENT_FILTER_IMAGE_FILE,
+       SCREEN_CONNECTOR_EVAS_CHANGED_EVENT_FILTER_ALL =
+               TIZEN_REMOTE_SURFACE_CHANGED_BUFFER_EVENT_FILTER_TBM | TIZEN_REMOTE_SURFACE_CHANGED_BUFFER_EVENT_FILTER_IMAGE_FILE,
+} screen_connector_evas_changed_event_filter_type;
 
 typedef void (*screen_connector_watcher_evas_added_cb)(const char *appid, const char *instance_id, const int pid, void *data);
 typedef void (*screen_connector_watcher_evas_removed_cb)(const char *appid, const char *instance_id, const int pid, void *data);
@@ -55,6 +62,8 @@ int screen_connector_watcher_evas_fini(void);
 screen_connector_watcher_evas_h screen_connector_watcher_evas_add(screen_connector_watcher_evas_ops *ops, void *data);
 int screen_connector_watcher_evas_remove(screen_connector_watcher_evas_h h);
 int screen_connector_watcher_evas_update(screen_connector_watcher_evas_h watcher_evas_h, const char *instance_id);
+int screen_connector_watcher_evas_set_changed_event_filter(screen_connector_watcher_evas_h watcher_evas_h,
+               screen_connector_evas_changed_event_filter_type type);
 
 /**
  * @}
index 0e4d177..b39b4cf 100644 (file)
@@ -302,3 +302,8 @@ EXPORT_API int screen_connector_watcher_evas_update(screen_connector_watcher_eva
        return screen_connector_watcher_update(watcher_evas_h->watcher_h, instance_id);
 }
 
+EXPORT_API int screen_connector_watcher_evas_set_changed_event_filter(screen_connector_watcher_evas_h watcher_evas_h,
+               screen_connector_evas_changed_event_filter_type type)
+{
+       return screen_connector_watcher_set_changed_event_filter(watcher_evas_h->watcher_h, type);
+}