summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuilherme Iscaro <iscaro@profusion.mobi>2016-11-29 14:25:46 -0200
committerGuilherme Iscaro <iscaro@profusion.mobi>2016-12-05 18:24:37 -0200
commit21556fcdd059cadc0ce84deffd82c97acc2d505b (patch)
treec0c9308d52521e9e54038c8e23ee4ee96fb34baa
parent74914c05159742d9228ecda2228726e341cf8ac6 (diff)
downloadefl-devs/iscaro/vnc-shutdown.tar.gz
Ecore Evas VNC: Properly shutdown server during cleanup.devs/iscaro/vnc-shutdown
The function rfbScreenCleanup() does not close the open sockets, a call to rfbShutdownServer() must be done to properly close them.
-rw-r--r--src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server.c b/src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server.c
index 088516245b..003a2da0fc 100644
--- a/src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server.c
+++ b/src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server.c
@@ -807,7 +807,7 @@ ecore_evas_vnc_server_new(Ecore_Evas *ee, int port, const char *addr,
_ecore_evas_vnc_server_socket_listen_activity,
server->vnc_screen,
NULL, NULL);
- EINA_SAFETY_ON_NULL_GOTO(server->vnc_listen_handler, err_addr);
+ EINA_SAFETY_ON_NULL_GOTO(server->vnc_listen_handler, err_listen);
can_listen = EINA_TRUE;
}
@@ -818,12 +818,12 @@ ecore_evas_vnc_server_new(Ecore_Evas *ee, int port, const char *addr,
_ecore_evas_vnc_server_socket_listen_activity,
server->vnc_screen,
NULL, NULL);
- EINA_SAFETY_ON_NULL_GOTO(server->vnc_listen6_handler, err_listen);
+ EINA_SAFETY_ON_NULL_GOTO(server->vnc_listen6_handler, err_listen6);
can_listen = EINA_TRUE;
}
//rfbInitServer() failed and could not setup the sockets.
- EINA_SAFETY_ON_FALSE_GOTO(can_listen, err_addr);
+ EINA_SAFETY_ON_FALSE_GOTO(can_listen, err_listen);
err = evas_engine_info_set(ee->evas, (Evas_Engine_Info *)engine);
EINA_SAFETY_ON_FALSE_GOTO(err, err_engine);
@@ -838,8 +838,10 @@ ecore_evas_vnc_server_new(Ecore_Evas *ee, int port, const char *addr,
err_engine:
ecore_main_fd_handler_del(server->vnc_listen6_handler);
- err_listen:
+ err_listen6:
ecore_main_fd_handler_del(server->vnc_listen_handler);
+ err_listen:
+ rfbShutdownServer(server->vnc_screen, TRUE);
err_addr:
rfbScreenCleanup(server->vnc_screen);
err_screen:
@@ -881,6 +883,7 @@ ecore_evas_vnc_server_del(Ecore_Evas_Vnc_Server *server)
WRN("Could not unset the region push hook callback");
ecore_main_fd_handler_del(server->vnc_listen6_handler);
ecore_main_fd_handler_del(server->vnc_listen_handler);
+ rfbShutdownServer(server->vnc_screen, TRUE);
free(server->frame_buffer);
rfbScreenCleanup(server->vnc_screen);
free(server);