diff --git a/src/include/pw3270/class.h b/src/include/pw3270/class.h index 32e4040..829384c 100644 --- a/src/include/pw3270/class.h +++ b/src/include/pw3270/class.h @@ -130,6 +130,7 @@ static session * start(const char *name = 0); static session * create(const char *name = 0) throw (std::exception); static session * create_local(H3270 *hSession) throw (std::exception); + static session * create_local() throw (std::exception); static session * get_default(void); static bool has_default(void); @@ -273,7 +274,6 @@ static session * (*factory)(const char *name); static session * create_remote(const char *name) throw (std::exception); - static session * create_local(void) throw (std::exception); #ifdef HAVE_ICONV iconv_t conv2Local; diff --git a/src/plugins/rx3270/pluginmain.cc b/src/plugins/rx3270/pluginmain.cc index 7fc0a2c..0643228 100644 --- a/src/plugins/rx3270/pluginmain.cc +++ b/src/plugins/rx3270/pluginmain.cc @@ -395,10 +395,6 @@ extern "C" /*--[ Implement ]------------------------------------------------------------------------------------*/ - static session * factory(const char *name) - { - return session::create_local(lib3270_get_default_session_handle()); - } LIB3270_EXPORT int pw3270_plugin_start(GtkWidget *window, GtkWidget *terminal) { @@ -407,7 +403,7 @@ extern "C" g_mutex_init(&mutex); #endif // GTK_CHECK_VERSION - rx3270_set_factory_method(factory); + rx3270_set_session(lib3270_get_default_session_handle()); return 0; } diff --git a/src/plugins/rx3270/rx3270.h b/src/plugins/rx3270/rx3270.h index f30d7fe..5dbee4e 100644 --- a/src/plugins/rx3270/rx3270.h +++ b/src/plugins/rx3270/rx3270.h @@ -151,7 +151,7 @@ #endif LIB3270_EXPORT void rx3270_set_package_option(RexxOption *option); - LIB3270_EXPORT void rx3270_set_factory_method(PW3270_NAMESPACE::session * (*)(const char *)); + LIB3270_EXPORT void rx3270_set_session(H3270 *hSession); #ifdef __cplusplus } diff --git a/src/plugins/rx3270/rxapimain.cc b/src/plugins/rx3270/rxapimain.cc index e6207d4..617d6ed 100644 --- a/src/plugins/rx3270/rxapimain.cc +++ b/src/plugins/rx3270/rxapimain.cc @@ -47,10 +47,21 @@ /*--[ Globals ]--------------------------------------------------------------------------------------*/ + static H3270 * default_session = NULL; + /*--[ Implement ]------------------------------------------------------------------------------------*/ -void rx3270_set_factory_method(PW3270_NAMESPACE::session * (* factory)(const char *)) +static PW3270_NAMESPACE::session * factory(const char *name) +{ + if(!default_session) + return PW3270_NAMESPACE::session::create_local(); + + return PW3270_NAMESPACE::session::create_local(default_session); +} + +void rx3270_set_session(H3270 *session) { + default_session = session; PW3270_NAMESPACE::session::set_plugin(factory); } -- libgit2 0.21.2