diff options
author | Guilherme Iscaro <iscaro@profusion.mobi> | 2016-11-07 14:43:31 -0200 |
---|---|---|
committer | Guilherme Iscaro <iscaro@profusion.mobi> | 2016-11-07 14:59:30 -0200 |
commit | 2294c3c9ea4a277a06b43318a389bc4d2e1682f8 (patch) | |
tree | a82918a252cb0f20b7032f3a1871cff1432c0143 | |
parent | f1316ce859d12d79128bc2663e5f2e66757e0bfe (diff) | |
download | efl-devs/iscaro/vnc_disconnect.tar.gz |
Ecore Evas VNC: Add client disconnected callback.devs/iscaro/vnc_disconnect
Summary:
Ecore Evas VNC: Properly unregister the region push hook callback.
This callback must be unregistered when the VNC server is deleted.
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D4384
-rw-r--r-- | src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server.c | 29 |
1 files changed, 29 insertions, 0 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 39f80cdcdc..def9593c9e 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 @@ -597,6 +597,8 @@ _ecore_evas_vnc_server_draw(Evas *evas, int x, int y, ee = evas_data_attach_get(evas); server = ee->vnc_server; + if (!server) return; + if (!server->frame_buffer || server->last_w != ee->w || server->last_h != ee->h) { char *new_fb; @@ -802,8 +804,35 @@ ecore_evas_vnc_server_new(Ecore_Evas *ee, int port, const char *addr, EAPI void ecore_evas_vnc_server_del(Ecore_Evas_Vnc_Server *server) { + Evas_Engine_Info *engine; + Eina_Bool err; + EINA_SAFETY_ON_NULL_RETURN(server); + engine = evas_engine_info_get(server->ee->evas); + +#ifdef BUILD_ENGINE_SOFTWARE_X11 + if (!strcmp(server->ee->driver, "software_x11")) + { + Evas_Engine_Info_Software_X11 *x11_engine; + + x11_engine = (Evas_Engine_Info_Software_X11 *)engine; + x11_engine->func.region_push_hook = NULL; + } +#endif +#ifdef BUILD_ENGINE_FB + if (!strcmp(server->ee->driver, "fb")) + { + Evas_Engine_Info_FB *fb_engine; + + fb_engine = (Evas_Engine_Info_FB *)engine; + fb_engine->func.region_push_hook = NULL; + } +#endif + + err = evas_engine_info_set(server->ee->evas, engine); + if (!err) + 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); free(server->frame_buffer); |