[gegl/swap-backend] buffer: only attempt cleaning up TileBackendSwap things if they were actually used



commit c39842f4bee8a8e60c6ad2f795c0a1aef6b602e3
Author: Ville Sokk <ville sokk gmail com>
Date:   Sat Oct 13 21:34:16 2012 +0300

    buffer: only attempt cleaning up TileBackendSwap things if they were actually used

 gegl/buffer/gegl-tile-backend-swap.c |   24 +++++++++++++++---------
 1 files changed, 15 insertions(+), 9 deletions(-)
---
diff --git a/gegl/buffer/gegl-tile-backend-swap.c b/gegl/buffer/gegl-tile-backend-swap.c
index dc21588..e1fbef1 100644
--- a/gegl/buffer/gegl-tile-backend-swap.c
+++ b/gegl/buffer/gegl-tile-backend-swap.c
@@ -867,17 +867,23 @@ gegl_tile_backend_swap_class_init (GeglTileBackendSwapClass *klass)
 void
 gegl_tile_backend_swap_cleanup (void)
 {
-  exit_thread = TRUE;
-  g_cond_signal (queue_cond);
-  g_thread_join (writer_thread);
+  if (in_fd != -1 && out_fd != -1)
+    {
+      exit_thread = TRUE;
+      g_cond_signal (queue_cond);
+      g_thread_join (writer_thread);
 
-  if (g_queue_get_length (queue) != 0)
-    g_warning ("tile-backend-swap writer queue wasn't empty before freeing\n");
+      if (g_queue_get_length (queue) != 0)
+        g_warning ("tile-backend-swap writer queue wasn't empty before freeing\n");
 
-  g_queue_free (queue);
-  g_cond_free (queue_cond);
-  g_cond_free (max_cond);
-  g_mutex_free (mutex);
+      g_queue_free (queue);
+      g_cond_free (queue_cond);
+      g_cond_free (max_cond);
+      g_mutex_free (mutex);
+
+      close (in_fd);
+      close (out_fd);
+    }
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]