Change src_destroy precedure 38/128438/4 accepted/tizen/unified/20170516.175103 submit/tizen/20170516.041041 tizen_4.0.m1_release
authorSeokHoon Lee <andy.shlee@samsung.com>
Wed, 10 May 2017 04:52:41 +0000 (13:52 +0900)
committerSeokHoon Lee <andy.shlee@samsung.com>
Thu, 11 May 2017 04:59:54 +0000 (13:59 +0900)
- Change SCMIRRORING_STATR_CREATED order for destory mira castserver
  It need to destroy miracst server after scmirroring_src_connect.
- Add scmirroring_src_disconnect process in scmirroring_src_destroy,
  in case of connected.
- Add OUT_OF_MEMORY error return
  in function __scmirroring_src_send_cmd_to_server

Signed-off-by: SeokHoon Lee <andy.shlee@samsung.com>
Change-Id: I6b8c4ae3ae19e2c3328dbe98dbc01c31d48bfa77

include/scmirroring_internal.h
packaging/capi-media-screen-mirroring.spec
src/scmirroring_src.c

index e47494f1c9a1a304e159a4be00604b18d43194c8..ece8e68c82615e8ebb0df5763cdac1e2f89e8877 100644 (file)
@@ -47,13 +47,13 @@ typedef enum {
  */
 typedef enum {
        SCMIRRORING_STATE_NULL = 0,         /**< Screen mirroring is not created yet */
+       SCMIRRORING_STATE_CREATED,          /**< Screen mirroring is created, but not realized yet */
        SCMIRRORING_STATE_READY,            /**< Screen mirroring is ready to play media */
        SCMIRRORING_STATE_CONNECTION_WAIT,  /**< Screen mirroring is waiting for connection */
        SCMIRRORING_STATE_CONNECTED,        /**< Screen mirroring is connected */
        SCMIRRORING_STATE_PLAYING,          /**< Screen mirroring is now playing media */
        SCMIRRORING_STATE_PAUSED,           /**< Screen mirroring is paused while playing media */
        SCMIRRORING_STATE_TEARDOWN,         /**< Teardown Screen mirroring */
-       SCMIRRORING_STATE_CREATED,          /**< Screen mirroring is created, but not realized yet */
        SCMIRRORING_STATE_MAX               /* Number of screen mirroring states */
 } scmirroring_state_e;
 
index 26b395312342e8ccfa2e18a59e663363fc1cbb9c..3ae492558d91fba8bf7ebc8fca1b2cfbbca243a5 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-screen-mirroring
 Summary:    A screen mirroring library in Tizen C API
-Version:    0.1.77
+Version:    0.1.78
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 235d60342fc40b3720da9db237e55983d3e204ee..3102e9b9c360f74db2022d424a478254788be9f2 100644 (file)
@@ -69,6 +69,11 @@ static int __scmirroring_src_send_cmd_to_server(scmirroring_src_s *scmirroring,
        scmirroring_retvm_if(cmd == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "cmd is NULL");
 
        _cmd = g_strdup(cmd);
+       if (_cmd == NULL) {
+               scmirroring_error("Out of memory for command buffer");
+               return SCMIRRORING_ERROR_OUT_OF_MEMORY;
+       }
+
        _cmd[strlen(_cmd)] = '\0';
 
        if (write(scmirroring->sock, _cmd, strlen(_cmd) + 1) != (signed int) strlen(_cmd) + 1) {
@@ -645,7 +650,7 @@ int scmirroring_src_connect(scmirroring_src_h scmirroring)
        scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL");
        scmirroring_retvm_if(_scmirroring->magic_num != SCMIRRORING_MAGIC_NUMBER, SCMIRRORING_ERROR_INVALID_PARAMETER, "Invalid handle");
 
-       scmirroring_retvm_if(_scmirroring->connected == CONNECTED_TO_SERVER, SCMIRRORING_ERROR_INVALID_OPERATION, "INVALID OPERATION, already connected to server.");
+       scmirroring_retvm_if(_scmirroring->connected == CONNECTED_TO_SERVER, SCMIRRORING_ERROR_NONE, "already connected to server.");
 
        /*Create TCP Socket*/
        if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) {
@@ -754,6 +759,11 @@ int scmirroring_src_disconnect(scmirroring_src_h scmirroring)
 
        scmirroring_retvm_if(_scmirroring == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "Handle is NULL");
        scmirroring_retvm_if(_scmirroring->magic_num != SCMIRRORING_MAGIC_NUMBER, SCMIRRORING_ERROR_INVALID_PARAMETER, "Invalid handle");
+       scmirroring_retvm_if(_scmirroring->connected == NOT_CONNECTED_TO_SERVER, SCMIRRORING_ERROR_NONE, "Already disconnected");
+
+       ret = __scmirroring_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_DESTROY);
+       if (ret != SCMIRRORING_ERROR_NONE)
+               scmirroring_error("Failed to destroy miracast server [%d]", ret);
 
        if (_scmirroring->channel != NULL) {
                g_io_channel_shutdown(_scmirroring->channel, FALSE, NULL);
@@ -898,18 +908,19 @@ int scmirroring_src_destroy(scmirroring_src_h scmirroring)
        scmirroring_retvm_if(_scmirroring->magic_num != SCMIRRORING_MAGIC_NUMBER, SCMIRRORING_ERROR_INVALID_PARAMETER, "Invalid handle");
 
        if (_scmirroring->connected == CONNECTED_TO_SERVER) {
-               ret = __scmirroring_src_send_cmd_to_server(_scmirroring, SCMIRRORING_STATE_CMD_DESTROY);
+               ret = scmirroring_src_disconnect(scmirroring);
                if (ret != SCMIRRORING_ERROR_NONE)
-                       scmirroring_error("Failed to destroy [%d]", ret);
-       } else {
-               SCMIRRORING_SAFE_FREE(_scmirroring->ip);
-               SCMIRRORING_SAFE_FREE(_scmirroring->port);
-               SCMIRRORING_SAFE_FREE(_scmirroring->scmirroring_state_cb);
-               SCMIRRORING_SAFE_G_FREE(_scmirroring->server_name);
-               SCMIRRORING_SAFE_FREE(_scmirroring);
+                       scmirroring_error("Failed to disconnect server [%d]", ret);
        }
+
        _scmirroring->magic_num = 0;
 
+       SCMIRRORING_SAFE_FREE(_scmirroring->ip);
+       SCMIRRORING_SAFE_FREE(_scmirroring->port);
+       SCMIRRORING_SAFE_FREE(_scmirroring->scmirroring_state_cb);
+       SCMIRRORING_SAFE_G_FREE(_scmirroring->server_name);
+       SCMIRRORING_SAFE_FREE(_scmirroring);
+
        scmirroring_debug_fleave();
 
        return ret;