#include <config.h>
#include <gtk/gtk.h>
#include <gtk/gtkgl.h>
+#include <glib/gstdio.h>
#include <gis.h>
static void log_func(const gchar *log_domain, GLogLevelFlags log_level,
const gchar *message, gpointer udata)
{
- if (log_level & log_levels)
- g_log_default_handler(log_domain, log_level, message, udata);
+ if (log_level & log_levels) {
+ if (log_level == G_LOG_LEVEL_DEBUG)
+ g_fprintf(stderr, "DEBUG: (%p) %s\n",
+ g_thread_self(), message);
+ else
+ g_log_default_handler(log_domain, log_level, message, udata);
+ }
}
static void on_log_level_changed(GtkSpinButton *spinner, AWeatherGui *self)
/* Init */
GError *error = NULL;
g_thread_init(NULL);
+ gdk_threads_init();
if (!gtk_init_with_args(&argc, &argv, "aweather", entries, NULL, &error)) {
g_print("%s\n", error->message);
g_error_free(error);
g_log_set_handler(NULL, G_LOG_LEVEL_MASK, log_func, NULL);
/* Set up AWeather */
- AWeatherGui *gui = aweather_gui_new();
+ gdk_threads_enter();
+ AWeatherGui *gui = aweather_gui_new();
gint prefs_debug = gis_prefs_get_integer(gui->prefs, "aweather/log_level", NULL);
gchar *prefs_site = gis_prefs_get_string(gui->prefs, "aweather/initial_site", NULL);
gtk_widget_show_all(GTK_WIDGET(gui));
gtk_main();
+ gdk_threads_leave();
return 0;
}
glDeleteTextures(1, &self->sweep_tex);
_load_sweep_gl(self->sweep, self->sweep_colors, &self->sweep_tex);
gtk_widget_queue_draw(GTK_WIDGET(self->viewer));
+ g_object_unref(self);
return FALSE;
}
void aweather_level2_set_sweep(AWeatherLevel2 *self,
if (!self->sweep_colors) return;
/* Load data */
+ g_object_ref(self);
g_idle_add(_set_sweep_cb, self);
}
GIS_CALLBACK(self)->callback = _draw_radar;
GIS_CALLBACK(self)->user_data = self;
}
-
+static void aweather_level2_dispose(GObject *_self)
+{
+ g_debug("AWeatherLevel2: dispose - %p", _self);
+ G_OBJECT_CLASS(aweather_level2_parent_class)->dispose(_self);
+}
+static void aweather_level2_finalize(GObject *_self)
+{
+ g_debug("AWeatherLevel2: finalize - %p", _self);
+ G_OBJECT_CLASS(aweather_level2_parent_class)->finalize(_self);
+}
static void aweather_level2_class_init(AWeatherLevel2Class *klass)
{
+ G_OBJECT_CLASS(klass)->finalize = aweather_level2_finalize;
+ G_OBJECT_CLASS(klass)->dispose = aweather_level2_dispose;
}