summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/ios/qioscontext.mm
Commit message (Collapse)AuthorAgeFilesLines
* iOS: Determine render buffer resize based on CA layer, not Qt windowTor Arne Vestbø2013-08-231-5/+5
| | | | | | | | | | | | | | | We resize the render-buffer based on the CALayer of the UIView that's backing the QPlatformWindow, so the logic in defaultFramebufferObject() to determine if a resize is needed should be based on the relationship between the render buffer-and the CALayer, not the render-buffer and the QPlatformWindow. There is still an issue of the QPlatformWindow and its UIView/CALayer not being in sync, but that's a separate issue. Change-Id: I84f617d07ec64fea0d027473e9720523eeae0c7a Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Merge branch 'stable' into devSergio Ahumada2013-07-111-0/+3
|\ | | | | | | | | | | | | | | | | | | Conflicts: qmake/generators/mac/pbuilder_pbx.cpp src/corelib/json/qjsonwriter.cpp src/corelib/kernel/qeventdispatcher_blackberry.cpp src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm Change-Id: I24df576c4cbd18fa51b03122f71e32bb83b9028f
| * iOS: Make sure we're deleting framebuffers in the right contextTor Arne Vestbø2013-07-051-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | When a QWindow was destroyed, we'd delete its corresponding buffers, but failed to make the correct EAGLContext current first. This would result in deleting/invalidating buffers for another window (whatever window's context was current at the time), and that window would then seemingly stop rendering anything, and turn black on rotation. Task-number: QTBUG-32246 Change-Id: I335a8c580203fc01e43da31c5cb6f567614c26fc Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | iOS: Look up OpenGL symbols using RTLD_DEFAULT instead of RTLD_NEXTTor Arne Vestbø2013-05-291-1/+1
|/ | | | | | | | Even if the call site is in the application binary, it's safer to use RTLD_DEFAULT as that implies using the default library search order. Change-Id: I1b30bded92b95fc7451fcdbf7afd7444dcecea71 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Set context and bind FBO before allocating render-buffer storageTor Arne Vestbø2013-05-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | defaultFramebufferObject() may be called from anywhere, at any point, not just makeCurrent(). One example is the glyph-cache, which uses it to re-bind the default FBO after generating the texture cache. If the default FBO had already been created, but the render-buffer was out of sync with the window size, we would end up in the resize code without the correct context current, and without the render-buffer's owning FBO bound. This caused "Failed to make complete framebuffer object 8cd7" warnings at runtime. We now make the context current and bind the FBO, even though it might already be bound and the context current from makeCurrent(), or when initially creating the FBO. For the future we should move the whole resize logic out of defaultFramebufferObject() and call it from makeCurrent(), or possibly [EAGLView layoutSubviews]. That's a higher impact change though, which we reserve for the 'dev' branch. Change-Id: I50ea949c12a02ad1af6ec9fdc3215d5da85b324f Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Don't pretend like our OpenGL context is single-bufferedTor Arne Vestbø2013-04-301-4/+5
| | | | | | | | | | | | | | | Internally iOS double-buffers its rendering using copy instead of flipping, so we reported that our context was single-buffered so that clients could take advantage of the unchanged buffer. This failed when clients (such as Qt itself) then assumed that calling swapBufferes() was not needed. We now properly report that we're double-buffered, and we'll have to find another way to report the way double-buffering works if that's still an optimization we'd like to provide to clients. Change-Id: Id2e4faa68ed3b837ad01d6f22b2927fc9c9769c2 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* iOS: Simplify context format setupTor Arne Vestbø2013-04-301-9/+5
| | | | | Change-Id: I6a6a025410298cecd5f62abd08388a7379359af7 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Fix build on case sensitive file systemsTor Arne Vestbø2013-04-041-1/+1
| | | | | Change-Id: I920e7320e429006aef9433db3e942dc257dc72eb Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: implement QIOSWindow::winId()Richard Moe Gustavsen2013-02-271-1/+2
| | | | | Change-Id: I3dd7accae43bcf7d4d6dfd8b272ab65d67bd935c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: Move handling of FBOs to QIOSContext instead of QIOSWindowTor Arne Vestbø2013-02-271-12/+88
| | | | | | | | | | | | | | | The lifetime of an FBO is tied to its context, so letting each window manage its own FBO failed when the window tried to delete the FBO at destruction time without the proper context being current, or even available anymore. We solve this by moving all handling of FBOs to the context itself, which is fine as we're exposing the necessary bits from the window to allocate storage based on its layer. Change-Id: I8c7c96cf63d6b667527c816f10ac2f4ff6a05e0c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Remove unnecessary const-trickery when passing QIOSContext to the windowTor Arne Vestbø2013-02-271-2/+2
| | | | | Change-Id: I56b3873342c1572ea6a651027e8f1a684cbe2a5a Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Update GL render buffers when the accociated window is resizedTor Arne Vestbø2013-02-271-8/+8
| | | | | | | | We keep track of the with and height of the FBO's buffers, and update their storage if the window size has changed since last time. Change-Id: I97788b69e7067a5b5b9f28e8498cf1bc5d2cf6ea Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Unset EAGL context if it's current when destroying QIOSContextTor Arne Vestbø2013-02-271-0/+3
| | | | | Change-Id: Ie0b27e6b0dafa2a7283b44d6676871fce15cc42a Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Implement QPlatformOpenGLContextTor Arne Vestbø2013-02-271-0/+124
The iOS platform GL context is an EAGLContext, which is wrapped by the new class QIOSContext. The class takes care of makeCurrent() and swapBuffers(), but defers framebuffer management to the corresponding QIOSWindow. At the moment only a single framebuffer is created, and changing the geometry of the QWindow does not trigger any sort of invalidation of the buffers. The implementation assumes OpenGL ES2.x support. Though strictly speaking we could support ES1 for QtGui, it serves little purpose as Qt Quick 2 requires ES2. This patch also disabled touch event synthesization until we have figured out where we will maintain the connection to UIWindow. QPlatformOpenGLContext::getProcAddress() for getting extensions is implemented by using dlsym() to look up the symbol. This should not present any issues for App Store deployment, like dlopen() would. Change-Id: I166f800f3ecc0d180133c590465371ac1642b0ec Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>