From: Roman Peresipkyn Date: Fri, 5 Aug 2016 12:15:03 +0000 (+0300) Subject: Start showing recently binded current client's external window if there has been... X-Git-Tag: submit/tizen/20160812.083535^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7095d6a47acfcbab51db4c417f65c882b82161fb;p=platform%2Fcore%2Fuifw%2Fe-mod-tizen-eom.git Start showing recently binded current client's external window if there has been connectetd external outpout changes: 1. send EOM's attribute and attribute_status states in 'info' event on connection and disconnection of an external output. It was necessary because events on clients side are handled in wron way. 2. Send ACTIVE and INACTIVE events to 'current' client if external output has been connected or disconnected. Change-Id: Iae4e6396fd71ac911c8b9938756967362c44fd2e Signed-off-by: Roman Peresipkyn --- diff --git a/protocol/eom-client-protocol.h b/protocol/eom-client-protocol.h index 1fcd29d..4aacb71 100644 --- a/protocol/eom-client-protocol.h +++ b/protocol/eom-client-protocol.h @@ -174,6 +174,10 @@ struct wl_eom_listener { * @w_mm: (none) * @h_mm: (none) * @connection: (none) + * @skip: (none) + * @attribute: (none) + * @attribute_state: (none) + * @error: (none) */ void (*output_info)(void *data, struct wl_eom *wl_eom, @@ -184,7 +188,11 @@ struct wl_eom_listener { uint32_t h, uint32_t w_mm, uint32_t h_mm, - uint32_t connection); + uint32_t connection, + uint32_t skip, + uint32_t attribute, + uint32_t attribute_state, + uint32_t error); /** * output_type - (none) * @output_id: (none) diff --git a/protocol/eom-protocol.c b/protocol/eom-protocol.c index c032027..b0b38d5 100644 --- a/protocol/eom-protocol.c +++ b/protocol/eom-protocol.c @@ -15,6 +15,10 @@ static const struct wl_interface *types[] = { NULL, NULL, NULL, + NULL, + NULL, + NULL, + NULL, &xdg_surface_interface, NULL, &wl_shell_surface_interface, @@ -22,14 +26,14 @@ static const struct wl_interface *types[] = { static const struct wl_message wl_eom_requests[] = { { "set_attribute", "uu", types + 0 }, - { "set_xdg_window", "uo", types + 8 }, - { "set_shell_window", "uo", types + 10 }, + { "set_xdg_window", "uo", types + 12 }, + { "set_shell_window", "uo", types + 14 }, { "get_output_info", "u", types + 0 }, }; static const struct wl_message wl_eom_events[] = { { "output_count", "u", types + 0 }, - { "output_info", "uuuuuuuu", types + 0 }, + { "output_info", "uuuuuuuuuuuu", types + 0 }, { "output_type", "uuu", types + 0 }, { "output_mode", "uu", types + 0 }, { "output_attribute", "uuuu", types + 0 }, diff --git a/protocol/eom-server-protocol.h b/protocol/eom-server-protocol.h index 333d0cd..f170f7f 100644 --- a/protocol/eom-server-protocol.h +++ b/protocol/eom-server-protocol.h @@ -212,9 +212,9 @@ wl_eom_send_output_count(struct wl_resource *resource_, uint32_t count) } static inline void -wl_eom_send_output_info(struct wl_resource *resource_, uint32_t output_id, uint32_t type, uint32_t mode, uint32_t w, uint32_t h, uint32_t w_mm, uint32_t h_mm, uint32_t connection) +wl_eom_send_output_info(struct wl_resource *resource_, uint32_t output_id, uint32_t type, uint32_t mode, uint32_t w, uint32_t h, uint32_t w_mm, uint32_t h_mm, uint32_t connection, uint32_t skip, uint32_t attribute, uint32_t attribute_state, uint32_t error) { - wl_resource_post_event(resource_, WL_EOM_OUTPUT_INFO, output_id, type, mode, w, h, w_mm, h_mm, connection); + wl_resource_post_event(resource_, WL_EOM_OUTPUT_INFO, output_id, type, mode, w, h, w_mm, h_mm, connection, skip, attribute, attribute_state, error); } static inline void diff --git a/protocol/eom.xml b/protocol/eom.xml index ff50650..2ea8e15 100644 --- a/protocol/eom.xml +++ b/protocol/eom.xml @@ -34,7 +34,7 @@ - + ***** TODO ****** @@ -43,7 +43,7 @@ - + ***** TODO ****** @@ -52,7 +52,7 @@ - + ***** TODO ****** @@ -62,7 +62,7 @@ - + ***** TODO ****** @@ -104,6 +104,10 @@ + + + + diff --git a/src/e_mod_main.c b/src/e_mod_main.c index e7fac6c..0a7a94d 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -183,13 +183,8 @@ _e_eom_cb_wl_bind(struct wl_client *client, void *data, uint32_t version, uint32 output->id, output->type, output->mode, output->width, output->height, output->phys_width, output->phys_height, output->status); wl_eom_send_output_info(resource, output->id, output->type, output->mode, output->width, output->height, - output->phys_width, output->phys_height, output->status); - - wl_eom_send_output_attribute(resource, - output->id, - _e_eom_output_state_get_attribute(output), - _e_eom_output_state_get_attribute_state(output), - EOM_ERROR_NONE); + output->phys_width, output->phys_height, output->status, + 1, 0, 0, 0); } } @@ -712,17 +707,23 @@ _e_eom_output_connected(E_EomOutputPtr eom_output) { EOM_DBG("Send MIRROR ON notification to clients"); - wl_eom_send_output_info(iterator->resource, eom_output->id, - eom_output->type, eom_output->mode, - eom_output->width, eom_output->height, - eom_output->phys_width, eom_output->phys_height, - eom_output->status); - - wl_eom_send_output_attribute(iterator->resource, - eom_output->id, - _e_eom_output_state_get_attribute(eom_output), - _e_eom_output_state_get_attribute_state(eom_output), - EOM_ERROR_NONE); + if (iterator->current) + wl_eom_send_output_info(iterator->resource, eom_output->id, + eom_output->type, eom_output->mode, + eom_output->width, eom_output->height, + eom_output->phys_width, eom_output->phys_height, + eom_output->status, + 0, + _e_eom_output_state_get_attribute(eom_output), + EOM_OUTPUT_ATTRIBUTE_STATE_ACTIVE, + EOM_ERROR_NONE); + else + wl_eom_send_output_info(iterator->resource, eom_output->id, + eom_output->type, eom_output->mode, + eom_output->width, eom_output->height, + eom_output->phys_width, eom_output->phys_height, + eom_output->status, + 1, 0, 0, 0); } } @@ -803,18 +804,23 @@ _e_eom_cb_tdm_output_status_change(tdm_output *output, tdm_output_change_type ty if (iterator) { EOM_DBG("Send MIRROR OFF notification to clients"); - - wl_eom_send_output_info(iterator->resource, eom_output->id, - eom_output->type, eom_output->mode, - eom_output->width, eom_output->height, - eom_output->phys_width, eom_output->phys_height, - eom_output->status); - - wl_eom_send_output_attribute(iterator->resource, - eom_output->id, - _e_eom_output_state_get_attribute(eom_output), - EOM_OUTPUT_ATTRIBUTE_STATE_LOST, - EOM_ERROR_NONE); + if (iterator->current) + wl_eom_send_output_info(iterator->resource, eom_output->id, + eom_output->type, eom_output->mode, + eom_output->width, eom_output->height, + eom_output->phys_width, eom_output->phys_height, + eom_output->status, + 0, + _e_eom_output_state_get_attribute(eom_output), + EOM_OUTPUT_ATTRIBUTE_STATE_INACTIVE, + EOM_ERROR_NONE); + else + wl_eom_send_output_info(iterator->resource, eom_output->id, + eom_output->type, eom_output->mode, + eom_output->width, eom_output->height, + eom_output->phys_width, eom_output->phys_height, + eom_output->status, + 1, 0, 0, 0); } } @@ -1033,7 +1039,7 @@ _e_eom_cb_wl_request_get_output_info(struct wl_client *client, struct wl_resourc output->phys_width, output->phys_height, output->status); wl_eom_send_output_info(resource, output->id, output->type, output->mode, output->width, output->height, - output->phys_width, output->phys_height, output->status); + output->phys_width, output->phys_height, output->status, 1, 0, 0, 0); } } } @@ -1314,7 +1320,7 @@ _e_eom_output_start_mirror(E_EomOutputPtr eom_output) GOTOIFTRUE(tdm_err != TDM_ERROR_NONE, err, "Commit crtc:%d", tdm_err); _e_eom_output_state_set_mode(eom_output, EOM_OUTPUT_MODE_MIRROR); - _e_eom_output_state_set_attribute(eom_output, EOM_OUTPUT_ATTRIBUTE_NONE); + /* _e_eom_output_state_set_attribute(eom_output, EOM_OUTPUT_ATTRIBUTE_NONE); */ eom_output->state = MIRROR; return;