From 53e5f25c34977e5f2cad40bb20d735bb077657d4 Mon Sep 17 00:00:00 2001 From: JohannJEG <125712359+JohannJEG@users.noreply.github.com> Date: Fri, 23 Aug 2024 05:04:19 -0400 Subject: [PATCH] Clear the screen before drawing, to avoid problems with image sources with transparency. --- src/filter/mirr0r/mirr0r.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/filter/mirr0r/mirr0r.cpp b/src/filter/mirr0r/mirr0r.cpp index abad27e..555bb1b 100755 --- a/src/filter/mirr0r/mirr0r.cpp +++ b/src/filter/mirr0r/mirr0r.cpp @@ -53,6 +53,14 @@ class Mirr0r : public frei0r::filter { } + void clearScreen(cairo_t* cr, int width, int height) { + cairo_save (cr); + cairo_set_source_rgba(cr, 0.0, 0.0, 0.0, 0.0); + cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); + cairo_paint (cr); + cairo_restore (cr); + } + virtual void update(double time, uint32_t* out, const uint32_t* in) { int w = this->width; @@ -71,6 +79,9 @@ class Mirr0r : public frei0r::filter { // Create a Cairo drawing context for the destination surface cairo_t *cr = cairo_create(dest_image); + // Clear the screen + clearScreen(cr, w, h); + // Create a Cairo surface for the source image cairo_surface_t *image = cairo_image_surface_create_for_data((unsigned char*)in, CAIRO_FORMAT_ARGB32,