[gtk/wip/chergert/glproto: 278/526] return false when texture id is 0
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/glproto: 278/526] return false when texture id is 0
- Date: Tue, 16 Feb 2021 01:14:32 +0000 (UTC)
commit 22d2db315f365521c7a95a5c77e04c0f64ed69ab
Author: Christian Hergert <chergert redhat com>
Date: Wed Jan 20 11:50:41 2021 -0800
return false when texture id is 0
since there is nothing to draw for the glyph, we want to break out early
in the text node processing.
gsk/next/gskglglyphlibraryprivate.h | 13 +++++++------
gsk/next/gskglrenderjob.c | 2 ++
2 files changed, 9 insertions(+), 6 deletions(-)
---
diff --git a/gsk/next/gskglglyphlibraryprivate.h b/gsk/next/gskglglyphlibraryprivate.h
index 3e7a286148..d95001c5ff 100644
--- a/gsk/next/gskglglyphlibraryprivate.h
+++ b/gsk/next/gskglglyphlibraryprivate.h
@@ -88,18 +88,19 @@ gsk_gl_glyph_library_lookup_or_add (GskGLGlyphLibrary *self,
const GskGLGlyphValue **out_value)
{
GskGLTextureAtlasEntry *entry;
- GskGLGlyphKey *k;
if G_LIKELY (gsk_gl_texture_library_lookup ((GskGLTextureLibrary *)self, key, &entry))
{
*out_value = (GskGLGlyphValue *)entry;
- return TRUE;
+ }
+ else
+ {
+ GskGLGlyphKey *k = g_slice_copy (sizeof *key, key);
+ g_object_ref (k->font);
+ gsk_gl_glyph_library_add (self, k, out_value);
}
- k = g_slice_copy (sizeof *key, key);
- g_object_ref (k->font);
-
- return gsk_gl_glyph_library_add (self, k, out_value);
+ return GSK_GL_TEXTURE_ATLAS_ENTRY_TEXTURE (*out_value) != 0;
}
G_END_DECLS
diff --git a/gsk/next/gskglrenderjob.c b/gsk/next/gskglrenderjob.c
index fbc3677009..76c92ffaaa 100644
--- a/gsk/next/gskglrenderjob.c
+++ b/gsk/next/gskglrenderjob.c
@@ -2544,6 +2544,8 @@ gsk_gl_render_job_visit_text_node (GskGLRenderJob *job,
texture_id = GSK_GL_TEXTURE_ATLAS_ENTRY_TEXTURE (glyph);
+ g_assert (texture_id > 0);
+
if G_UNLIKELY (last_texture != texture_id)
{
gsk_gl_program_end_draw (program);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]