summaryrefslogtreecommitdiff
path: root/screen_connector_watcher_evas
diff options
context:
space:
mode:
authorHyunho Kang <hhstark.kang@samsung.com>2017-02-10 14:18:28 +0900
committerHyunho Kang <hhstark.kang@samsung.com>2017-02-13 10:00:01 +0900
commit7dcac60b2b98387af463681e012998be9278ef64 (patch)
tree85ed2310cf8c5348fb5912193eb02da562bfee49 /screen_connector_watcher_evas
parente262f6dbb8bb12f2a537b620a9e90a0929f833b5 (diff)
downloadscreen-connector-7dcac60b2b98387af463681e012998be9278ef64.tar.gz
screen-connector-7dcac60b2b98387af463681e012998be9278ef64.tar.bz2
screen-connector-7dcac60b2b98387af463681e012998be9278ef64.zip
Fix screen_connector_watcher_evas_add_by_rid bug
This API was designed for other viewer but implementation was for main viewer Change-Id: I1292fb070d5a1c298e0bc8750ae864ee9407cda5 Signed-off-by: Hyunho Kang <hhstark.kang@samsung.com>
Diffstat (limited to 'screen_connector_watcher_evas')
-rw-r--r--screen_connector_watcher_evas/include/screen_connector_watcher_evas.h30
-rw-r--r--screen_connector_watcher_evas/src/screen_connector_watcher_evas.c33
2 files changed, 41 insertions, 22 deletions
diff --git a/screen_connector_watcher_evas/include/screen_connector_watcher_evas.h b/screen_connector_watcher_evas/include/screen_connector_watcher_evas.h
index 117fea5..3e429cb 100644
--- a/screen_connector_watcher_evas/include/screen_connector_watcher_evas.h
+++ b/screen_connector_watcher_evas/include/screen_connector_watcher_evas.h
@@ -65,8 +65,36 @@ int screen_connector_watcher_evas_freeze_visibility(Evas_Object *obj, visibility
int screen_connector_watcher_evas_thaw_visibility(Evas_Object *obj);
int screen_connector_watcher_evas_send_mouse_up(Evas_Object *obj);
int screen_connector_watcher_evas_send_touch_cancel(Evas_Object *obj);
+
+/**
+ * @brief Add screen connector watcher by rid.
+ * @details Using this API, viewer can watch screen which already watched by other viewer.\n
+ * @since_tizen 3.0
+ * @param[in] obj screen image object
+ * @param[out] pid screen provider pid
+ * @return 0 if success, negative value(<0) if fail
+ *
+ * @remark
+ * This API is only for main viewer. \n
+ * Sub viewer can not get provider's information like provider's pid by screen image object.
+ * @see screen_connector_watcher_evas_add_by_rid()
+*/
int screen_connector_watcher_evas_get_pid(Evas_Object *obj, int *pid);
-int screen_connector_watcher_evas_add_by_rid(screen_connector_watcher_evas_ops *ops, int res_id, void *data);
+
+/**
+ * @brief Add screen connector watcher by rid.
+ * @details Using this API, viewer can watch screen which already watched by other viewer.\n
+ * @since_tizen 3.0
+ * @param[in] ops screen watcher evas callback handler function
+ * @param[in] res_id screen provider rid
+ * @param[in] data user-supplied data for watcher handler
+ * @return @c Not null on success
+ *
+ * @remark
+ * This API is only for sub viewer. \n
+ * Sub viewer can not get provider's information like provider's pid by screen image object.
+*/
+screen_connector_watcher_evas_h screen_connector_watcher_evas_add_by_rid(screen_connector_watcher_evas_ops *ops, int res_id, void *data);
int screen_connector_watcher_evas_get_rid(Evas_Object *obj, int *resource_id);
/**
diff --git a/screen_connector_watcher_evas/src/screen_connector_watcher_evas.c b/screen_connector_watcher_evas/src/screen_connector_watcher_evas.c
index 00657af..3d0a25c 100644
--- a/screen_connector_watcher_evas/src/screen_connector_watcher_evas.c
+++ b/screen_connector_watcher_evas/src/screen_connector_watcher_evas.c
@@ -693,14 +693,12 @@ EXPORT_API int screen_connector_watcher_evas_send_touch_cancel(Evas_Object *obj)
return 0;
}
-EXPORT_API int screen_connector_watcher_evas_add_by_rid(screen_connector_watcher_evas_ops *ops, int res_id, void *data)
+EXPORT_API screen_connector_watcher_evas_h screen_connector_watcher_evas_add_by_rid(screen_connector_watcher_evas_ops *ops,
+ int res_id, void *data)
{
- GHashTableIter iter;
- gpointer key, value;
screen_connector_watcher_evas_h watcher_evas_h;
- screen_connector_watcher_evas_h cur_h = NULL;
screen_connector_watcher_evas_ops *evas_ops;
- char *appid = NULL;
+ char rid_str[32];
int pid = 0;
screen_connector_watcher_ops watcher_ops;
@@ -708,35 +706,28 @@ EXPORT_API int screen_connector_watcher_evas_add_by_rid(screen_connector_watcher
watcher_ops.missing_cb = __watcher_missing_cb;
watcher_ops.update_cb = __watcher_update_cb;
- g_hash_table_iter_init(&iter, __watcher_tbl);
- while (g_hash_table_iter_next(&iter, &key, &value)) {
- cur_h = (screen_connector_watcher_evas_h)value;
- if (screen_connector_watcher_get_resource_id(cur_h->watcher_h) == res_id) {
- appid = screen_connector_watcher_get_appid(cur_h->watcher_h);
- pid = screen_connector_watcher_get_pid(cur_h->watcher_h);
- break;
- }
- }
-
evas_ops = (screen_connector_watcher_evas_ops *)calloc(1, sizeof(screen_connector_watcher_evas_ops));
if (evas_ops == NULL) {
LOGE("evas_ops calloc fail");
- return -1;
+ return NULL;
}
+ snprintf(rid_str, sizeof(rid_str), "%d", res_id);
memcpy(evas_ops, ops, sizeof(screen_connector_watcher_evas_ops));
watcher_evas_h = (screen_connector_watcher_evas_h)calloc(1, sizeof(struct _screen_connector_watcher_evas_h));
if (watcher_evas_h == NULL) {
LOGE("handle calloc fail");
free(evas_ops);
- return -1;
+ return NULL;
}
+ watcher_evas_h->img_type = -1;
watcher_evas_h->ops = evas_ops;
watcher_evas_h->data = data;
- watcher_evas_h->watcher_h = screen_connector_watcher_create_handle(appid, pid, &watcher_ops, watcher_evas_h);
+ watcher_evas_h->watcher_h = screen_connector_watcher_create_handle(rid_str, pid, &watcher_ops, watcher_evas_h);
+ screen_connector_watcher_set_resource_id(watcher_evas_h->watcher_h, res_id);
screen_connector_watcher_redirect_surface(watcher_evas_h->watcher_h);
- return 0;
+ return watcher_evas_h;
}
EXPORT_API int screen_connector_watcher_evas_get_rid(Evas_Object *obj, int *resource_id)
@@ -745,7 +736,7 @@ EXPORT_API int screen_connector_watcher_evas_get_rid(Evas_Object *obj, int *reso
watcher_evas_h = (screen_connector_watcher_evas_h)g_hash_table_lookup(__watcher_tbl, obj);
if (!watcher_evas_h) {
- LOGE("unknown object. not widget object");
+ LOGE("unknown object.");
return -1;
}
*resource_id = screen_connector_watcher_get_resource_id(watcher_evas_h->watcher_h);
@@ -759,7 +750,7 @@ EXPORT_API int screen_connector_watcher_evas_get_pid(Evas_Object *obj, int *pid)
watcher_evas_h = (screen_connector_watcher_evas_h)g_hash_table_lookup(__watcher_tbl, obj);
if (!watcher_evas_h) {
- LOGE("unknown object. not widget object");
+ LOGE("unknown object.");
return -1;
}
*pid = screen_connector_watcher_get_pid(watcher_evas_h->watcher_h);