Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf251b9e authored by Mathias Agopian's avatar Mathias Agopian
Browse files

fix a scissor bug in the GLES-on-top-of copybit code

parent b6822d7a
Loading
Loading
Loading
Loading
+14 −17
Original line number Diff line number Diff line
@@ -52,28 +52,25 @@ static void textureToCopyBitImage(
}

struct clipRectRegion : public copybit_region_t {
    clipRectRegion(ogles_context_t* c) {
    clipRectRegion(ogles_context_t* c) 
    {
        scissor_t const* scissor = &c->rasterizer.state.scissor;
        r.l = scissor->left;
        r.t = scissor->top;
        r.r = scissor->right;
        r.b = scissor->bottom;
        next = iterate; 
        int x = c->viewport.scissor.x;
        int y = c->viewport.scissor.y;
        r.l = x;
        r.t = y;
        r.r = x + c->viewport.scissor.w;
        r.b = y + c->viewport.scissor.h;
        firstTime = true;
    }
private:
    static int iterate(copybit_region_t const * self, copybit_rect_t* rect) {
        clipRectRegion* myself = (clipRectRegion*) self;
        if (myself->firstTime) {
            myself->firstTime = false;
            *rect = myself->r;
        *rect = static_cast<clipRectRegion const*>(self)->r;
        const_cast<copybit_region_t *>(self)->next = iterate_done;
        return 1;
    }
    static int iterate_done(copybit_region_t const *, copybit_rect_t*) {
        return 0;
    }
    mutable copybit_rect_t r;
    mutable bool firstTime;
    copybit_rect_t r;
};

static bool supportedCopybitsFormat(int format) {