fix a scissor bug in the GLES-on-top-of copybit code
diff --git a/opengl/libagl/copybit.cpp b/opengl/libagl/copybit.cpp
index a539a2b..d57a6e4 100644
--- a/opengl/libagl/copybit.cpp
+++ b/opengl/libagl/copybit.cpp
@@ -52,28 +52,25 @@
 }
 
 struct clipRectRegion : public copybit_region_t {
-    clipRectRegion(ogles_context_t* c) {
-        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;
+    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; 
     }
 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;
-            return 1;
-        }
+        *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) {