git-svn-id: http://lassie.dyndns-server.com/svn/gargoyle-gtk@176
ddfedd41-794f-dd11-ae45-
00112f111e67
/* Unref the input queues */
g_async_queue_unref(glk_data->char_input_queue);
g_async_queue_unref(glk_data->line_input_queue);
/* Unref the input queues */
g_async_queue_unref(glk_data->char_input_queue);
g_async_queue_unref(glk_data->line_input_queue);
+
+ printf("cleaning up...\n");
+ chimara_glk_reset(glk_data->self);
-chimara_glk_finalize(GObject *object)
+chimara_glk_free_private_data(ChimaraGlk *self)
- ChimaraGlk *self = CHIMARA_GLK(object);
ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(self);
ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(self);
/* Free the event queue */
g_mutex_lock(priv->event_lock);
g_queue_foreach(priv->event_queue, (GFunc)g_free, NULL);
/* Free the event queue */
g_mutex_lock(priv->event_lock);
g_queue_foreach(priv->event_queue, (GFunc)g_free, NULL);
g_async_queue_unref(priv->char_input_queue);
g_async_queue_unref(priv->line_input_queue);
g_async_queue_unref(priv->char_input_queue);
g_async_queue_unref(priv->line_input_queue);
- /* Free private data */
pango_font_description_free(priv->default_font_desc);
pango_font_description_free(priv->monospace_font_desc);
pango_font_description_free(priv->default_font_desc);
pango_font_description_free(priv->monospace_font_desc);
g_free(priv->current_dir);
g_hash_table_destroy(priv->default_styles->text_buffer);
g_hash_table_destroy(priv->default_styles->text_grid);
g_hash_table_destroy(priv->current_styles->text_buffer);
g_hash_table_destroy(priv->current_styles->text_grid);
g_free(priv->current_dir);
g_hash_table_destroy(priv->default_styles->text_buffer);
g_hash_table_destroy(priv->default_styles->text_grid);
g_hash_table_destroy(priv->current_styles->text_buffer);
g_hash_table_destroy(priv->current_styles->text_grid);
+static void
+chimara_glk_finalize(GObject *object)
+{
+ ChimaraGlk *self = CHIMARA_GLK(object);
+ chimara_glk_free_private_data(self);
+
G_OBJECT_CLASS(chimara_glk_parent_class)->finalize(object);
}
G_OBJECT_CLASS(chimara_glk_parent_class)->finalize(object);
}
+/**
+ * chimara_glk_reset:
+ * Resets the widget back to it's origional state. IE: it resets all the private data.
+ * @param self: The ChimaraGLK widget to reset
+ */
+void
+chimara_glk_reset(ChimaraGlk *self)
+{
+ chimara_glk_free_private_data(self);
+ chimara_glk_init(self);
+}
+
+
/* Internal function: Recursively get the Glk window tree's size request */
static void
request_recurse(winid_t win, GtkRequisition *requisition, guint spacing)
/* Internal function: Recursively get the Glk window tree's size request */
static void
request_recurse(winid_t win, GtkRequisition *requisition, guint spacing)
chimara_glk_stopped(ChimaraGlk *self)
{
CHIMARA_GLK_USE_PRIVATE(self, priv);
chimara_glk_stopped(ChimaraGlk *self)
{
CHIMARA_GLK_USE_PRIVATE(self, priv);
+ printf("stopped signal received\n");
priv->running = FALSE;
/* Free the plugin */
priv->running = FALSE;
/* Free the plugin */
chimara_glk_started(ChimaraGlk *self)
{
CHIMARA_GLK_USE_PRIVATE(self, priv);
chimara_glk_started(ChimaraGlk *self)
{
CHIMARA_GLK_USE_PRIVATE(self, priv);
+ printf("started signal received\n");
/* Run main function */
g_signal_emit_by_name(startup->glk_data->self, "started");
/* Run main function */
g_signal_emit_by_name(startup->glk_data->self, "started");
+ /* FIXME: hack. should be done by the signal above but for some reason
+ * this doesn't work */
+ chimara_glk_started(startup->glk_data->self);
+
g_signal_emit_by_name(startup->glk_data->self, "stopped");
g_signal_emit_by_name(startup->glk_data->self, "stopped");
+ /* FIXME: hack. should be done by the signal above but for some reason
+ * this doesn't work */
+ chimara_glk_stopped(startup->glk_data->self);
+
g_slice_free(struct StartupData, startup);
return NULL;
}
g_slice_free(struct StartupData, startup);
return NULL;
}
{
g_return_if_fail(glk || CHIMARA_IS_GLK(glk));
CHIMARA_GLK_USE_PRIVATE(glk, priv);
{
g_return_if_fail(glk || CHIMARA_IS_GLK(glk));
CHIMARA_GLK_USE_PRIVATE(glk, priv);
+
+ printf("stopping (%d)...\n", priv->running);
/* Don't do anything if not running a program */
if(!priv->running)
return;
/* Don't do anything if not running a program */
if(!priv->running)
return;
gboolean chimara_glk_get_running(ChimaraGlk *glk);
void chimara_glk_feed_char_input(ChimaraGlk *glk, guint32 keycode);
void chimara_glk_feed_line_input(ChimaraGlk *glk, const gchar *text);
gboolean chimara_glk_get_running(ChimaraGlk *glk);
void chimara_glk_feed_char_input(ChimaraGlk *glk, guint32 keycode);
void chimara_glk_feed_line_input(ChimaraGlk *glk, const gchar *text);
+void chimara_glk_reset(ChimaraGlk *self);
style_init()
{
ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
style_init()
{
ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
- GHashTable *default_text_grid_styles = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref);
- GHashTable *default_text_buffer_styles = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref);
- GHashTable *current_text_grid_styles = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref);
- GHashTable *current_text_buffer_styles = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref);
+ GHashTable *default_text_grid_styles = g_hash_table_new(g_str_hash, g_str_equal);
+ GHashTable *default_text_buffer_styles = g_hash_table_new(g_str_hash, g_str_equal);
+ GHashTable *current_text_grid_styles = g_hash_table_new(g_str_hash, g_str_equal);
+ GHashTable *current_text_buffer_styles = g_hash_table_new(g_str_hash, g_str_equal);
GtkTextTag *tag;
/* Create the CSS file scanner */
GtkTextTag *tag;
/* Create the CSS file scanner */