loaders: Add profiler marks

These are potentially expensive calls, we
should make sure they show up in profiles.
This commit is contained in:
Matthias Clasen 2021-09-18 14:12:39 -04:00
parent 164443a99a
commit c9135546b6
3 changed files with 24 additions and 1 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}