|
|
@@ -108,9 +108,17 @@ void xcursor_render(xcursor_t *data, int x_offset, int y_offset)
|
|
|
if (!data->tex)
|
|
|
return;
|
|
|
|
|
|
+ const bool linear_srgb = gs_get_linear_srgb();
|
|
|
+
|
|
|
+ const bool previous = gs_framebuffer_srgb_enabled();
|
|
|
+ gs_enable_framebuffer_srgb(linear_srgb);
|
|
|
+
|
|
|
gs_effect_t *effect = gs_get_effect();
|
|
|
gs_eparam_t *image = gs_effect_get_param_by_name(effect, "image");
|
|
|
- gs_effect_set_texture(image, data->tex);
|
|
|
+ if (linear_srgb)
|
|
|
+ gs_effect_set_texture_srgb(image, data->tex);
|
|
|
+ else
|
|
|
+ gs_effect_set_texture(image, data->tex);
|
|
|
|
|
|
gs_blend_state_push();
|
|
|
gs_blend_function(GS_BLEND_SRCALPHA, GS_BLEND_INVSRCALPHA);
|
|
|
@@ -124,6 +132,8 @@ void xcursor_render(xcursor_t *data, int x_offset, int y_offset)
|
|
|
|
|
|
gs_enable_color(true, true, true, true);
|
|
|
gs_blend_state_pop();
|
|
|
+
|
|
|
+ gs_enable_framebuffer_srgb(previous);
|
|
|
}
|
|
|
|
|
|
void xcursor_offset(xcursor_t *data, int_fast32_t x_org, int_fast32_t y_org)
|