[gegl] buffer: avoid typecheck in gegl_buffer_sample
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] buffer: avoid typecheck in gegl_buffer_sample
- Date: Fri, 20 Jun 2014 07:30:29 +0000 (UTC)
commit 33722ad5b8377323e241c1a8e8aa79a21a155f16
Author: Øyvind Kolås <pippin gimp org>
Date: Fri Jun 20 07:42:33 2014 +0200
buffer: avoid typecheck in gegl_buffer_sample
gegl/buffer/gegl-buffer-private.h | 1 +
gegl/buffer/gegl-sampler.c | 9 ++++++---
2 files changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-private.h b/gegl/buffer/gegl-buffer-private.h
index b056f56..557bbb7 100644
--- a/gegl/buffer/gegl-buffer-private.h
+++ b/gegl/buffer/gegl-buffer-private.h
@@ -57,6 +57,7 @@ struct _GeglBuffer
GeglSampler *sampler; /* cached sampler for speeding up random
access interpolated fetches from the
buffer */
+ GeglSamplerType sampler_type;
const Babl *sampler_format; /* the format of the cached sampler */
GeglTileStorage *tile_storage;
diff --git a/gegl/buffer/gegl-sampler.c b/gegl/buffer/gegl-sampler.c
index f929817..bebdd1b 100644
--- a/gegl/buffer/gegl-sampler.c
+++ b/gegl/buffer/gegl-sampler.c
@@ -478,12 +478,13 @@ gegl_buffer_sample (GeglBuffer *buffer,
GeglAbyssPolicy repeat_mode)
{
GType desired_type;
+ /*
if (sampler_type == GEGL_SAMPLER_NEAREST && format == buffer->soft_format)
{
GeglRectangle rect = {floorf (x), floorf(y), 1, 1};
gegl_buffer_get (buffer, &rect, 1, NULL, dest, GEGL_AUTO_ROWSTRIDE, repeat_mode);
return;
- }
+ }*/
if (!format)
format = buffer->soft_format;
@@ -494,21 +495,23 @@ gegl_buffer_sample (GeglBuffer *buffer,
gegl_buffer_cl_cache_flush (buffer, &rect);
}
- desired_type = gegl_sampler_gtype_from_enum (sampler_type);
/* unset the cached sampler if it dosn't match the needs */
if (buffer->sampler != NULL &&
- (!G_TYPE_CHECK_INSTANCE_TYPE (buffer->sampler, desired_type) ||
+ (buffer->sampler_type != sampler_type ||
buffer->sampler_format != format
))
{
g_object_unref (buffer->sampler);
buffer->sampler = NULL;
+ buffer->sampler_type = 0;
}
/* look up appropriate sampler,. */
if (buffer->sampler == NULL)
{
+ desired_type = gegl_sampler_gtype_from_enum (sampler_type);
+ buffer->sampler_type = sampler_type;
buffer->sampler = g_object_new (desired_type,
"buffer", buffer,
"format", format,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]