[gegl] buffer: in the swap backend, improve reading/writing stat flags



commit be55d7f66337fd9b5795fab2aa899444a4eec0d1
Author: Ell <ell_se yahoo com>
Date:   Sun Mar 15 23:20:32 2020 +0200

    buffer: in the swap backend, improve reading/writing stat flags

 gegl/buffer/gegl-tile-backend-swap.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)
---
diff --git a/gegl/buffer/gegl-tile-backend-swap.c b/gegl/buffer/gegl-tile-backend-swap.c
index c66cd2914..58d424f29 100644
--- a/gegl/buffer/gegl-tile-backend-swap.c
+++ b/gegl/buffer/gegl-tile-backend-swap.c
@@ -620,6 +620,8 @@ gegl_tile_backend_swap_write (ThreadParams *params)
       g_atomic_pointer_add (&total_uncompressed, +params->size);
     }
 
+  writing = TRUE;
+
   if (out_offset != offset)
     {
       if (lseek (out_fd, offset, SEEK_SET) < 0)
@@ -631,16 +633,12 @@ gegl_tile_backend_swap_write (ThreadParams *params)
       out_offset = offset;
     }
 
-  writing = TRUE;
-
   while (to_be_written > 0)
     {
       gint wrote;
       wrote = write (out_fd, data, to_be_written);
       if (wrote <= 0)
         {
-          writing = FALSE;
-
           g_message ("unable to write tile data to self: "
                      "%s (%d/%d bytes written)",
                      g_strerror (errno), wrote, to_be_written);
@@ -662,6 +660,8 @@ gegl_tile_backend_swap_write (ThreadParams *params)
   return;
 
 error:
+  writing = FALSE;
+
   g_atomic_pointer_add (&total_uncompressed, -params->size);
 
   gegl_tile_backend_swap_free_block (params->block);
@@ -812,10 +812,14 @@ gegl_tile_backend_swap_entry_read (GeglTileBackendSwap *self,
 
   g_mutex_lock (&read_mutex);
 
+  reading = TRUE;
+
   if (in_offset != offset)
     {
       if (lseek (in_fd, offset, SEEK_SET) < 0)
         {
+          reading = FALSE;
+
           g_mutex_unlock (&read_mutex);
 
           g_warning ("unable to seek to tile in buffer: %s", g_strerror (errno));
@@ -824,8 +828,6 @@ gegl_tile_backend_swap_entry_read (GeglTileBackendSwap *self,
       in_offset = offset;
     }
 
-  reading = TRUE;
-
   to_be_read = entry->block->size;
 
   while (to_be_read > 0)


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