From 4a6257e06c8c55a7429ac56cbe26b71af0e78abc Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Fri, 15 Feb 2019 15:52:33 -0200 Subject: [PATCH] Fixing object cleanup on windows version. --- pw3270-plugin-ipc.cbp | 3 +++ src/core/windows/gobject.c | 8 +------- src/core/windows/gobject.h | 1 + src/core/windows/stop.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 7 deletions(-) create mode 100644 src/core/windows/stop.c diff --git a/pw3270-plugin-ipc.cbp b/pw3270-plugin-ipc.cbp index 5a1d9f5..0375005 100644 --- a/pw3270-plugin-ipc.cbp +++ b/pw3270-plugin-ipc.cbp @@ -99,6 +99,9 @@ + + diff --git a/src/core/windows/gobject.c b/src/core/windows/gobject.c index b61ba93..3d169e6 100644 --- a/src/core/windows/gobject.c +++ b/src/core/windows/gobject.c @@ -43,13 +43,7 @@ static void ipc3270_finalize(GObject *object) { debug("ipc3270::%s(%p)",__FUNCTION__,object); - ipc3270 * ipc = IPC3270(object); - - if(ipc->source) - { - g_source_destroy((GSource *) ipc->source); - ipc->source = NULL; - } + ipc3270_release_object(IPC3270(object)); G_OBJECT_CLASS(ipc3270_parent_class)->finalize(object); diff --git a/src/core/windows/gobject.h b/src/core/windows/gobject.h index 4cda26e..0cc4dcd 100644 --- a/src/core/windows/gobject.h +++ b/src/core/windows/gobject.h @@ -90,6 +90,7 @@ G_GNUC_INTERNAL GSourceFuncs ipc3270_source_funcs; + G_GNUC_INTERNAL void ipc3270_release_object(ipc3270 *object); G_GNUC_INTERNAL void ipc3270_wait_for_client(IPC3270_PIPE_SOURCE *source); G_END_DECLS diff --git a/src/core/windows/stop.c b/src/core/windows/stop.c new file mode 100644 index 0000000..8edc6c5 --- /dev/null +++ b/src/core/windows/stop.c @@ -0,0 +1,56 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como main.c e possui - linhas de código. + * + * Referências: + * + * https://github.com/joprietoe/gdbus/blob/master/gdbus-example-server.c + * https://github.com/bratsche/glib/blob/master/gio/tests/gdbus-example-export.c + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + */ + +#include "gobject.h" +#include +#include + +#include +#include + +void ipc3270_release_object(ipc3270 *object) { + + if(object->source) + { + g_source_destroy((GSource *) object->source); + object->source = NULL; + } + + if(object->hPipe) + { + closehandle(object->hPipe); + object->hPipe = 0; + } + +} -- libgit2 0.21.2