/* * "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., 59 Temple * Place, Suite 330, Boston, MA, 02111-1307, USA * * Este programa está nomeado como plugin.cc e possui - linhas de código. * * Contatos: * * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) * */ #if defined WIN32 // http://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx #ifndef LOAD_LIBRARY_SEARCH_DEFAULT_DIRS #define LOAD_LIBRARY_SEARCH_DEFAULT_DIRS 0x00001000 #endif // LOAD_LIBRARY_SEARCH_DEFAULT_DIRS #ifndef LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR #define LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR 0x00000100 #endif // LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR #include #endif #include "private.h" #include #include #include #include #include #include #include #include #include #include #include #include /*--[ Globals ]--------------------------------------------------------------------------------------*/ #if GTK_CHECK_VERSION(2,32,0) static GMutex mutex; #else static GStaticMutex mutex = G_STATIC_MUTEX_INIT; #endif // GTK_CHECK_VERSION using namespace std; /*---[ Implement ]----------------------------------------------------------------------------------*/ void lock() { #if GTK_CHECK_VERSION(2,32,0) g_mutex_lock(&mutex); #else g_static_mutex_lock(&mutex); #endif // GTK_CHECK_VERSION } void unlock() { #if GTK_CHECK_VERSION(2,32,0) g_mutex_unlock(&mutex); #else g_static_mutex_unlock(&mutex); #endif // GTK_CHECK_VERSION } bool trylock() { #if GTK_CHECK_VERSION(2,32,0) return g_mutex_trylock(&mutex); #else return g_static_mutex_trylock(&mutex); #endif // GTK_CHECK_VERSION } using PW3270_NAMESPACE::exception; extern "C" { LIB3270_EXPORT int pw3270_plugin_start(GtkWidget *window, GtkWidget *terminal) { trace("JAVA: %s",__FUNCTION__); #if GTK_CHECK_VERSION(2,32,0) g_mutex_init(&mutex); #endif // GTK_CHECK_VERSION return 0; } LIB3270_EXPORT int pw3270_plugin_stop(GtkWidget *window, GtkWidget *terminal) { lock(); if(jvm) { jvm->DestroyJavaVM(); jvm = NULL; } unlock(); #if GTK_CHECK_VERSION(2,32,0) g_mutex_clear(&mutex); #endif // GTK_CHECK_VERSION trace("JAVA: %s",__FUNCTION__); return 0; } }