diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-09-18 14:12:39 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-09-18 17:35:00 -0400 |
commit | c9135546b6bd764c6fd07add93f7fc3ca246d2d8 (patch) | |
tree | 7ecfd0c0f18a6d647b1c6ed1951c7e77751c3902 | |
parent | 164443a99afdcca32b83976fd6f1d6a9a3e4899b (diff) | |
download | gtk+-c9135546b6bd764c6fd07add93f7fc3ca246d2d8.tar.gz |
loaders: Add profiler marks
These are potentially expensive calls, we
should make sure they show up in profiles.
-rw-r--r-- | gdk/loaders/gdkjpeg.c | 5 | ||||
-rw-r--r-- | gdk/loaders/gdkpng.c | 11 | ||||
-rw-r--r-- | gdk/loaders/gdktiff.c | 9 |
3 files changed, 24 insertions, 1 deletions
diff --git a/gdk/loaders/gdkjpeg.c b/gdk/loaders/gdkjpeg.c index c64a0ea99d..68832de078 100644 --- a/gdk/loaders/gdkjpeg.c +++ b/gdk/loaders/gdkjpeg.c @@ -23,6 +23,8 @@ #include "gdktexture.h" #include "gdkmemorytextureprivate.h" +#include "gdkprofilerprivate.h" + #include <jpeglib.h> #include <jerror.h> #include <setjmp.h> @@ -174,6 +176,7 @@ gdk_load_jpeg (GBytes *input_bytes, GBytes *bytes; GdkTexture *texture; GdkMemoryFormat format; + G_GNUC_UNUSED guint64 before = GDK_PROFILER_CURRENT_TIME; info.err = jpeg_std_error (&jerr.pub); jerr.pub.error_exit = fatal_error_handler; @@ -260,6 +263,8 @@ gdk_load_jpeg (GBytes *input_bytes, g_bytes_unref (bytes); + gdk_profiler_end_mark (before, "jpeg load", NULL); + return texture; } diff --git a/gdk/loaders/gdkpng.c b/gdk/loaders/gdkpng.c index 80fca2460b..4c32533e36 100644 --- a/gdk/loaders/gdkpng.c +++ b/gdk/loaders/gdkpng.c @@ -21,6 +21,7 @@ #include "gdkintl.h" #include "gdkmemorytextureprivate.h" +#include "gdkprofilerprivate.h" #include "gdktexture.h" #include "gdktextureprivate.h" #include "gsk/ngl/fp16private.h" @@ -291,7 +292,7 @@ premultiply_16bit (guchar *data, } /* }}} */ -/* {{{ Public API */ +/* {{{ Public API */ GdkTexture * gdk_load_png (GBytes *bytes, @@ -309,6 +310,7 @@ gdk_load_png (GBytes *bytes, GBytes *out_bytes; GdkTexture *texture; int bpp; + G_GNUC_UNUSED gint64 before = GDK_PROFILER_CURRENT_TIME; io.data = (guchar *)g_bytes_get_data (bytes, &io.size); io.position = 0; @@ -449,6 +451,13 @@ gdk_load_png (GBytes *bytes, g_free (row_pointers); png_destroy_read_struct (&png, &info, NULL); + if (GDK_PROFILER_IS_RUNNING) + { + gint64 end = GDK_PROFILER_CURRENT_TIME; + if (end - before > 500000) + gdk_profiler_add_mark (before, end - before, "png load", NULL); + } + return texture; } diff --git a/gdk/loaders/gdktiff.c b/gdk/loaders/gdktiff.c index 62d2194f0c..9f8ec837f1 100644 --- a/gdk/loaders/gdktiff.c +++ b/gdk/loaders/gdktiff.c @@ -21,6 +21,7 @@ #include "gdkintl.h" #include "gdkmemorytextureprivate.h" +#include "gdkprofilerprivate.h" #include "gdktexture.h" #include "gdktextureprivate.h" @@ -411,6 +412,7 @@ gdk_load_tiff (GBytes *input_bytes, int bpp; GBytes *bytes; GdkTexture *texture; + G_GNUC_UNUSED gint64 before = GDK_PROFILER_CURRENT_TIME; tif = tiff_open_read (input_bytes); @@ -505,6 +507,13 @@ gdk_load_tiff (GBytes *input_bytes, TIFFClose (tif); + if (GDK_PROFILER_IS_RUNNING) + { + gint64 end = GDK_PROFILER_CURRENT_TIME; + if (end - before > 500000) + gdk_profiler_add_mark (before, end - before, "tiff load", NULL); + } + return texture; } |