Author: post
Date: 2011-01-07 11:45:09 +0100 (Fri, 07 Jan 2011)
New Revision: 3790

Modified:
   trunk/plugins/output-jpegfile/output-jpegfile.c
   trunk/plugins/output-pngfile/output-pngfile.c
   trunk/plugins/output-tifffile/output-tifffile.c
Log:
Lock IO while saving 'physical' images.

Modified: trunk/plugins/output-jpegfile/output-jpegfile.c
===================================================================
--- trunk/plugins/output-jpegfile/output-jpegfile.c     2011-01-05 23:58:16 UTC 
(rev 3789)
+++ trunk/plugins/output-jpegfile/output-jpegfile.c     2011-01-07 10:45:09 UTC 
(rev 3790)
@@ -233,6 +233,7 @@
        cinfo.in_color_space = JCS_RGB;
        jpeg_set_defaults(&cinfo);
        jpeg_set_quality(&cinfo, jpegfile->quality, TRUE);
+       rs_io_lock();
        jpeg_start_compress(&cinfo, TRUE);
        if (jpegfile->color_space && 
!g_str_equal(G_OBJECT_TYPE_NAME(jpegfile->color_space), "RSSrgb"))
        {
@@ -279,6 +280,7 @@
        gchar *input_filename = NULL;
        rs_filter_get_recursive(filter, "filename", &input_filename, NULL);
        rs_exif_copy(input_filename, jpegfile->filename, 
G_OBJECT_TYPE_NAME(jpegfile->color_space), RS_EXIF_FILE_TYPE_JPEG);
+       rs_io_unlock();
        g_free(input_filename);
 
        return(TRUE);

Modified: trunk/plugins/output-pngfile/output-pngfile.c
===================================================================
--- trunk/plugins/output-pngfile/output-pngfile.c       2011-01-05 23:58:16 UTC 
(rev 3789)
+++ trunk/plugins/output-pngfile/output-pngfile.c       2011-01-07 10:45:09 UTC 
(rev 3790)
@@ -219,6 +219,7 @@
 #ifdef G_BIG_ENDIAN
                png_set_swap(png_ptr);
 #endif
+               rs_io_lock();
                png_write_image(png_ptr, row_pointers);
                g_object_unref(image);
        }
@@ -247,6 +248,7 @@
                if (n_channels == 4)
                        png_set_filler(png_ptr, 0, PNG_FILLER_AFTER);
                
+               rs_io_lock();
                png_write_image(png_ptr, row_pointers);
                g_object_unref(pixbuf);
        }
@@ -261,6 +263,7 @@
        gchar *input_filename = NULL;
        rs_filter_get_recursive(filter, "filename", &input_filename, NULL);
        rs_exif_copy(input_filename, pngfile->filename, 
G_OBJECT_TYPE_NAME(pngfile->color_space), RS_EXIF_FILE_TYPE_PNG);
+       rs_io_unlock();
        g_free(input_filename);
 
        return TRUE;

Modified: trunk/plugins/output-tifffile/output-tifffile.c
===================================================================
--- trunk/plugins/output-tifffile/output-tifffile.c     2011-01-05 23:58:16 UTC 
(rev 3789)
+++ trunk/plugins/output-tifffile/output-tifffile.c     2011-01-07 10:45:09 UTC 
(rev 3790)
@@ -226,6 +226,7 @@
 
                TIFFSetField(tiff, TIFFTAG_BITSPERSAMPLE, 16);
                printf("pixelsize: %d\n", image->pixelsize);
+               rs_io_lock();
                for(row=0;row<image->h;row++)
                {
                        gushort *buf = GET_PIXEL(image, 0, row);
@@ -254,6 +255,7 @@
                gchar *line = g_new(gchar, width * 3);
 
                TIFFSetField(tiff, TIFFTAG_BITSPERSAMPLE, 8);
+               rs_io_lock();
                for(row=0;row<height;row++)
                {
                        guchar *buf = GET_PIXBUF_PIXEL(pixbuf, 0, row);
@@ -278,6 +280,7 @@
        rs_filter_get_recursive(filter, "filename", &input_filename, NULL);
 
        rs_exif_copy(input_filename, tifffile->filename,  
G_OBJECT_TYPE_NAME(tifffile->color_space), RS_EXIF_FILE_TYPE_TIFF);
+       rs_io_unlock();
        g_free(input_filename);
 
        return(TRUE);


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to