Make canvas cleanup work propertly...
authorGunnar Sletta <gunnar.sletta@jollamobile.com>
Wed, 30 Jul 2014 15:11:02 +0000 (17:11 +0200)
committerGunnar Sletta <gunnar.sletta@jollamobile.com>
Fri, 1 Aug 2014 21:16:26 +0000 (23:16 +0200)
commit557d73575978b873bb01ea791ae237fa6067fa7f
treeaa08ef0b5293f344d2df963d9524f7f017f4022a
parentba193b94c6822ba382e2dc69cae60c6833f5cc9d
Make canvas cleanup work propertly...

Depending on which mode we are in, we need to run cleanup
on the right thread and in the right way.

Image canvas doesn't contain any GL resources and can be nuked
right away. The actual QSGTexture is managed by the node, so we
don't need to worry about it.

For FBO it is a bit more complicated.
 - Threaded: We create a cleanup handler that runs makeCurrent
   deleteTexture and doneCurrent and then release the surface
   on the GUI thread.
 - Immediate: Same as threaded, just right away
 - Cooperative: Schedule the texture to be deleted on the
   next sync. The Context doesn't have its own GL context
   in this case, so don't worry about it.

Change-Id: I2d0ae7acfa05561faa52f3cacd767eb18cabaf02
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
src/quick/items/context2d/qquickcontext2d.cpp
src/quick/items/context2d/qquickcontext2dtexture.cpp
src/quick/items/context2d/qquickcontext2dtexture_p.h