Fixed window closing bug #43
[rodin/chimara.git] / libchimara / stream.c
index f6abec64885e4718783485df6a72e14efd9d185d..b0e97f9ff5b3553153cf72cd68e0073b84b8057f 100644 (file)
@@ -24,24 +24,8 @@ stream_new_common(glui32 rock)
        /* Add it to the global stream list */
        glk_data->stream_list = g_list_prepend(glk_data->stream_list, str);
        str->stream_list = glk_data->stream_list;
-       
-       return str;
-}
 
-/* Internal function: stream closing stuff that is safe to call from either the
- main thread or the Glk thread. */
-void
-trash_stream_thread_independent(ChimaraGlkPrivate *glk_data, strid_t str)
-{
-       /* Remove the stream from the global stream list */
-       glk_data->stream_list = g_list_delete_link(glk_data->stream_list, str->stream_list);
-       
-       /* If it was the current output stream, set that to NULL */
-       if(glk_data->current_stream == str)
-               glk_data->current_stream = NULL;
-       
-       str->magic = MAGIC_FREE;
-       g_free(str);
+       return str;
 }
 
 /* Internal function: Stuff to do upon closing any type of stream. Call only 
@@ -71,7 +55,15 @@ stream_close_common(strid_t str, stream_result_t *result)
                result->writecount = str->write_count;
        }
 
-       trash_stream_thread_independent(glk_data, str);
+       /* Remove the stream from the global stream list */
+       glk_data->stream_list = g_list_delete_link(glk_data->stream_list, str->stream_list);
+       
+       /* If it was the current output stream, set that to NULL */
+       if(glk_data->current_stream == str)
+               glk_data->current_stream = NULL;
+       
+       str->magic = MAGIC_FREE;
+       g_free(str);
 }
 
 /**