[gtk/delayed-loading: 1/3] loaders: Add profiler marks




commit c9135546b6bd764c6fd07add93f7fc3ca246d2d8
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Sep 18 14:12:39 2021 -0400

    loaders: Add profiler marks
    
    These are potentially expensive calls, we
    should make sure they show up in profiles.

 gdk/loaders/gdkjpeg.c |  5 +++++
 gdk/loaders/gdkpng.c  | 11 ++++++++++-
 gdk/loaders/gdktiff.c |  9 +++++++++
 3 files changed, 24 insertions(+), 1 deletion(-)
---
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;
 }
 


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