gsk: Add profile in gsk_renderer_render_texture
Make gsk_renderer_render_texture produce a texture that has the correct color profile attached. This fixes the rendering of node files in the node editor.
This commit is contained in:
@@ -1543,8 +1543,10 @@ create_texture_from_texture_destroy (gpointer data)
|
||||
}
|
||||
|
||||
GdkTexture *
|
||||
gsk_gl_driver_create_gdk_texture (GskGLDriver *self,
|
||||
guint texture_id)
|
||||
gsk_gl_driver_create_gdk_texture (GskGLDriver *self,
|
||||
guint texture_id,
|
||||
GdkGLTextureFlags flags,
|
||||
GdkColorProfile *profile)
|
||||
{
|
||||
GskGLTextureState *state;
|
||||
GskGLTexture *texture;
|
||||
@@ -1572,10 +1574,12 @@ gsk_gl_driver_create_gdk_texture (GskGLDriver *self,
|
||||
texture->texture_id = 0;
|
||||
gsk_gl_texture_free (texture);
|
||||
|
||||
return gdk_gl_texture_new (self->command_queue->context,
|
||||
texture_id,
|
||||
width,
|
||||
height,
|
||||
create_texture_from_texture_destroy,
|
||||
state);
|
||||
return gdk_gl_texture_new_with_color_profile (self->command_queue->context,
|
||||
texture_id,
|
||||
width,
|
||||
height,
|
||||
flags,
|
||||
profile,
|
||||
create_texture_from_texture_destroy,
|
||||
state);
|
||||
}
|
||||
|
||||
@@ -155,7 +155,9 @@ void gsk_gl_driver_begin_frame (GskGLDriver *s
|
||||
void gsk_gl_driver_end_frame (GskGLDriver *self);
|
||||
void gsk_gl_driver_after_frame (GskGLDriver *self);
|
||||
GdkTexture * gsk_gl_driver_create_gdk_texture (GskGLDriver *self,
|
||||
guint texture_id);
|
||||
guint texture_id,
|
||||
GdkGLTextureFlags flags,
|
||||
GdkColorProfile *profile);
|
||||
void gsk_gl_driver_cache_texture (GskGLDriver *self,
|
||||
const GskTextureKey *key,
|
||||
guint texture_id);
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <gdk/gdkdisplayprivate.h>
|
||||
#include <gdk/gdkglcontextprivate.h>
|
||||
#include <gdk/gdksurfaceprivate.h>
|
||||
#include <gdk/gdkcolorprofileprivate.h>
|
||||
#include <gdk/gdkintl.h>
|
||||
#include <gsk/gskdebugprivate.h>
|
||||
#include <gsk/gskrendererprivate.h>
|
||||
@@ -386,7 +387,10 @@ gsk_gl_renderer_render_texture (GskRenderer *renderer,
|
||||
#endif
|
||||
gsk_gl_render_job_render_flipped (job, root);
|
||||
texture_id = gsk_gl_driver_release_render_target (self->driver, render_target, FALSE);
|
||||
texture = gsk_gl_driver_create_gdk_texture (self->driver, texture_id);
|
||||
texture = gsk_gl_driver_create_gdk_texture (self->driver,
|
||||
texture_id,
|
||||
GDK_GL_TEXTURE_PREMULTIPLIED,
|
||||
gdk_color_profile_get_srgb_linear ());
|
||||
gsk_gl_driver_end_frame (self->driver);
|
||||
gsk_gl_render_job_free (job);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user