Hallo Forum
Ich habe vor für XChat ein plugin in c++ zu schreiben
welches zusätzliche dialogfelder mittels GTKmm beinhaltet
nur hab ich da irgendein BUG drin
weil wenn ich das plugin lade und dann das dialogfeld benutzt ist zwar alles ok
aber wenn ich dann einmal das plugin entlade und neu lade habe ich beim benutzten des dialogfeldes einen sofortigen crash
hier mal die quelle zum testplugin :
Code:
#include <gtkmm.h>
// c++ `pkg-config gtkmm-2.4 --cflags --libs` -Wall -O1 -shared -fPIC gtkmm.cpp -o gtkmm.so
extern "C"
{
#include "xchat/xchat-plugin.h"
}
#define PNAME "Test"
#define PDESC "Blahs";
#define PVERSION "0.1"
static xchat_plugin *ph;
static int test_cb(char *word[], char *word_eol[], void *userdata)
{
Gtk::Main main(0,NULL);
Gtk::Window window_obj;
main.run(window_obj);
return 0;
}
extern "C"
{
int xchat_plugin_init(xchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version,char *arg);
}
void xchat_plugin_get_info(char **name, char **desc, char **version, void **reserved)
{
*name = PNAME;
*desc = PDESC;
*version = PVERSION;
}
int xchat_plugin_init(xchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version,char *arg)
{
ph = plugin_handle;
*plugin_name = PNAME;
*plugin_desc = PDESC;
*plugin_version = PVERSION;
xchat_hook_command(ph, "test", XCHAT_PRI_NORM, test_cb, "Usage: Test YES", 0);
xchat_print(ph, "Test plugin loaded!\n");
return(1);
}
und hier auch mal einen kleinen auszug der meldungen die beim neu laden im terminal ausgegeben werden
Code:
(xchat:4719): GLib-GObject-WARNING **: cannot register existing type `gtkmm__PangoContext'
(xchat:4719): GLib-GObject-WARNING **: cannot register existing type `gtkmm__PangoFont'
(xchat:4719): GLib-GObject-WARNING **: cannot register existing type `gtkmm__PangoFontFace'
(xchat:4719): GLib-GObject-WARNING **: cannot register existing type `gtkmm__PangoFontFamily'
soweit ich es herausfinden konnte muss es wohl irgendwie mit dem
Code:
Gtk::Main main(0,NULL);
zusammenhängen
bin für jede hilfe dankbar
Lesezeichen