| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| #include "config.h" |
| #include "gdk-pixbuf/gdk-pixbuf.h" |
| #include "test-common.h" |
| |
| static void |
| load_image (gpointer data, |
| gpointer user_data) |
| { |
| gchar *filename = data; |
| const gchar *path; |
| FILE *file; |
| int nbytes; |
| guchar buffer[1024]; |
| GdkPixbufLoader *loader; |
| GError *error = NULL; |
| |
| loader = gdk_pixbuf_loader_new (); |
| path = g_test_get_filename (G_TEST_DIST, "test-images/randomly-modified", filename, NULL); |
| |
| g_test_message ("reading %s", path); |
| file = fopen (path, "r"); |
| g_assert (file != NULL); |
| |
| while (!feof (file)) |
| { |
| nbytes = fread (buffer, 1, sizeof (buffer), file); |
| gdk_pixbuf_loader_write (loader, buffer, nbytes, &error); |
| g_assert_no_error (error); |
| g_thread_yield (); |
| } |
| |
| fclose (file); |
| |
| gdk_pixbuf_loader_close (loader, &error); |
| g_assert_no_error (error); |
| |
| g_object_unref (loader); |
| } |
| |
| static void |
| test_threads (void) |
| { |
| GThreadPool *pool; |
| gint iterations; |
| gint i; |
| |
| pool = g_thread_pool_new (load_image, NULL, 20, FALSE, NULL); |
| |
| if (g_test_thorough ()) |
| iterations = 100; |
| else |
| iterations = 1; |
| |
| for (i = 0; i < iterations; i++) |
| { |
| if (format_supported ("jpeg")) |
| g_thread_pool_push (pool, "valid.1.jpeg", NULL); |
| if (format_supported ("png")) |
| g_thread_pool_push (pool, "valid.1.png", NULL); |
| if (format_supported ("gif")) |
| g_thread_pool_push (pool, "valid.1.gif", NULL); |
| if (format_supported ("bmp")) |
| g_thread_pool_push (pool, "valid.1.bmp", NULL); |
| if (format_supported ("jpeg")) |
| g_thread_pool_push (pool, "valid.2.jpeg", NULL); |
| if (format_supported ("xpm")) |
| g_thread_pool_push (pool, "valid.1.xpm", NULL); |
| if (format_supported ("tga")) |
| g_thread_pool_push (pool, "valid.1.tga", NULL); |
| if (format_supported ("tiff")) |
| g_thread_pool_push (pool, "valid.1.tiff", NULL); |
| if (format_supported ("jp2")) |
| g_thread_pool_push (pool, "valid.1.jp2", NULL); |
| } |
| |
| g_thread_pool_free (pool, FALSE, TRUE); |
| } |
| |
| int |
| main (int argc, char **argv) |
| { |
| g_test_init (&argc, &argv, NULL); |
| |
| g_test_add_func ("/pixbuf/threads", test_threads); |
| |
| return g_test_run (); |
| } |