summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
Commit message (Collapse)AuthorAgeFilesLines
* 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: support stand-alone qApp->processEvents callsRichard Moe Gustavsen2013-02-271-2/+7
| | | | | | | | Rough implementation to support stand-alone processEvent calls. We probably need to revisit this code to fix corner-cases later on. Change-Id: I72d5639dab599b4d0017aaa52b922f4185a50337 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: send mouse events (from touch events) from EAGLViewRichard Moe Gustavsen2013-02-272-11/+13
| | | | | Change-Id: Ia6c955f2c5bcde8e41d5908bfb8fd52bd449b3ec Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: implement QEventLoop support in the event dispatcherRichard Moe Gustavsen2013-02-272-2/+8
| | | | | | | | | | | With this patch you can now expect the following code to work: QEventLoop l; QTimer::singleShot(1000, &l, SLOT(quit())); l.exec(); Change-Id: Ic73e37affaadf8a859787d84ac02c15621ac7a29 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: create top-level UIWindow and UIViewControllerRichard Moe Gustavsen2013-02-272-0/+24
| | | | | | | | Create a UIWIndow with a view controller and a view where we can reparent our QIOSWindow views inside. Change-Id: Ic90707d3ebe1af970a3aa2aa0f8c0f4be192456a Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: Implement QIOSBackingStore in terms of a QOpenGLPaintDeviceTor Arne Vestbø2013-02-274-119/+89
| | | | | | | | | | | | | | | | We build on top of the QPlatformOpenGLContext implementation to get automatic support for QBackingStore-based painting. Since the OpenGL renderer does not clear the backingstore between frames, we actually also get support for partial updates, and we get the benefit of an accelerated paint engine for Qt Quick 1 without setting a GLWidget as the viewport, which would cause issues such as an extra QWindow. This patch also removes the dependency to QtOpenGL and QtWidgets, which were leftovers from the Qt4 platform plugin. In Qt5 the needed GL bits are in QtGui. Change-Id: Id9b736bfb2e4aec56c0fa9f5b7b4d8bff8e3d1dc Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Implement QPlatformOpenGLContextTor Arne Vestbø2013-02-278-376/+343
| | | | | | | | | | | | | | | | | | | | | | | | | 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>
* iOS: support killing timersRichard Moe Gustavsen2013-02-271-12/+42
| | | | | | | Implement the remaining timer functions in the event dispatcher Change-Id: Ie323962c898a2ee95ea60a8ca63b93cbd4544fd1 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: call UIApplicationMain from event dispatcher, and add application delegateRichard Moe Gustavsen2013-02-274-38/+165
| | | | | | | | | This change will let you call QApplication::exec() instead of UiApplicationMain from main. Also added an application delegate that we will need sooner or later for catching application activation events. Change-Id: I4edba5ce2059a804782d67c160755fc0e2e5267d Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: Flesh out initial QPlatformScreen implementationTor Arne Vestbø2013-02-272-57/+61
| | | | | | | | | | | | | | | | | | We check the device's model identifier to tweak the screen values based on the precense of older iPhone/iPod touch models, or the iPad Mini. This does not work when running under the simulator, which reports its model identifier as the architecture of the host platform. There doesn't appear to be any APIs to get the simulated device of the simulator, but if this becomes an issue we can always look at the UIDevice model and screen resolution and apply a few heuristics. We do not update the screen geometry on orientation-changes. This matches what UIScreen reports for bounds, but may not be the most intuitive solution from a Qt perspective compared to the way other platform-plugins work. Change-Id: I74783e053601de9ce805f8b52b944c116f9a1e3e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* iOS: Fix build on case sensitive filesystemsTor Arne Vestbø2013-02-271-1/+1
| | | | | Change-Id: Ic7a2b38ffcc2bd83e268c5caf5bec17006879969 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: QIOSEventDispatcher: implement timer supportRichard Moe Gustavsen2013-02-272-19/+132
| | | | | Change-Id: I1966a64e6535f32005681db37b4fe5d89dafc70c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: QIOSEventDispatcher: add runloop source for processing eventsRichard Moe Gustavsen2013-02-272-7/+63
| | | | | Change-Id: I6cd649a493dab9a982d71921f19d2a9252fc14b0 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: Add ability to get the UIView for a QWindow through ↵Tor Arne Vestbø2013-02-272-1/+25
| | | | | | | QPlatformNativeInterface Change-Id: Iab2742bbaa97ff345871ad07ef0162b12248506a Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Style nitpicking, rename m_fontDb to m_fontDatabaseTor Arne Vestbø2013-02-272-3/+4
| | | | | Change-Id: I9d92843af9018d51b73fadcc7c20d792fad772fa Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Keep UIScreen* for current QIOSScreen instead of looking up each timeTor Arne Vestbø2013-02-273-10/+11
| | | | | | | Also, add enum for screen numbers, for better code readability. Change-Id: Id5162c34e80ff5efb149ae86b49f51df183d1c1d Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Add screen like other platform pluginsTor Arne Vestbø2013-02-272-10/+3
| | | | | | | | | | We may add support for external displays at a later point, but for now we follow the same pattern as the other platform plugins. Either way we should call screenAdded() to let the platform integration know about the screen. Change-Id: Id01785a5262df0180caf957c7de8ecbbf169f233 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Get rid of singleton instance accessor in platform pluginTor Arne Vestbø2013-02-272-11/+0
| | | | | | | None of the other platform plugins have one, and it's not used anywhere. Change-Id: Id46ab5f75c9819511c3e9d123d0338c3c8799869 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Change member variable style to be consistent with Qt's de facto standardTor Arne Vestbø2013-02-277-122/+122
| | | | | Change-Id: Idd65ad9cbb77114466c5b69a799b98a7fee5068f Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Don't add to OBJECTIVE_HEADERS, there's no such thingTor Arne Vestbø2013-02-271-1/+1
| | | | | | | | We should add to HEADERS, so that moc will realize it needs to run on the headers. Change-Id: I582e989e4faf0835c4bf9a677cbd8ac075559319 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* iOS: Add missing QuartzCore dependency to platform pluginTor Arne Vestbø2013-02-271-1/+1
| | | | | Change-Id: Ic69a5a7faa9b7f9907d0325260b6b6e2389a4c3a Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* iOS: Don't link ios platform plugin to CocoaTor Arne Vestbø2013-02-271-1/+1
| | | | | Change-Id: I2348b19617d3e342cd344bf7d0fa894118cbfae8 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* iOS: Build platform plugin like other platform pluginsTor Arne Vestbø2013-02-271-4/+3
| | | | | | | ... by loading(qt_plugin) Change-Id: I9be438b72be986a991a81c2cf1a3e5047bcf0a60 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* iOS: Build ios platform plugin when appropriateTor Arne Vestbø2013-02-271-1/+4
| | | | | | | | | Defining QT_QPA_DEFAULT_PLATFORM_NAME in qplatformdefs.h is not neccecary, as qconfig.h will already have this define written by configure. Change-Id: I89d9191533f6b4e6bfd5eade6cc0dced02b50f81 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* iOS: fix build issue, dont link against cocoaRichard Moe Gustavsen2013-02-262-2/+2
| | | | | | | | | Make sure the libraries dont depend on Cocoa. This will be picked up by libtool, and make all apps and examples link against cocoa too (which will ofcourse fail) Change-Id: I5654bb08c4ed376fc7ee74da422d903270a8af38 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* iOS: copy brute-force port of Qt4 uikit plugin into Qt5.Richard Moe Gustavsen2013-02-2614-0/+1601
| | | | | | | | | | | | | | | | The plugin has been renamed from uikit to ios. Other than that, the plugin will now build, but do nothing. Most of the Qt4 code is preserved, with a rough translation into the Qt5 qpa API. A lot of code has simply been commented out so far, and most lacking at the moment is the event dispatcher which will need to be rewritten, and the opengl paint device implementation. But it should suffice as a starting ground. Also: The plugin will currently not automatically build when building Qt, this needs to be enabled from configure first. Change-Id: I0d229a453a8477618e06554655bffc5505203b44 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* Don't link QtPlatformSupport to CoreFoundation or CarbonTor Arne Vestbø2013-02-221-1/+1
| | | | | | | | | | | Move the Carbon dependency to the Cocoa platform plugin instead, where it's actually used. CoreFoundation was not used by any plugins and could be removed completely. Change-Id: I1c825cdf94e2cc348ea13519b894fd868be0d14a Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Add support for forced VSYNC using the EGLFS platform plugin.Milian Wolff2013-02-223-22/+30
| | | | | | | | | | | | | | | | | | | | | | | | Before a buffer swap the new QEglFSHooks::waitForVSync method is called which looks at QT_QPA_EGLFS_FORCEVSYNC and - if that is set and non-null - calls ioctl with the FBIO_WAITFORVSYNC request on the framebuffer device. This is required on some embedded platforms where the driver does not support VSYNC yet the Kernel provides a generic implementation. I tested this using QML_RENDER_TIMING=1 which proofs that the frame rate for an example of mine drops from >125fps to a straight ~60fps with a few frames that take ~33ms (i.e. 30fps) as expected for VSYNC. To prevent excessive open/close calls on the frame buffer device per frame, the file descriptor is now cached. To keep the QEglFSHooks interface as clean as possible this is done via a global static in qeglfshooks_stub.cpp and initialized and freed in platformInit and platformDestroy. Change-Id: I4d31b227c65ff22aa089db0fbc62c89a59cbb6c7 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-02-203-2/+17
|\ | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/features/unix/separate_debug_info.prf src/gui/kernel/qwindow_p.h src/plugins/platforms/cocoa/qcocoacursor.mm tests/auto/tools/moc/tst_moc.cpp Change-Id: Ieb57834c00f961a747ffe51e6eb9fc9612cebccf
| * Clean up the cached cursors inside the destructor of QCocoaCursorAndy Shaw2013-02-202-0/+5
| | | | | | | | | | Change-Id: I4e1222832efa29680b4e658a5c9109641599a2b9 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| * Fix the default handling of cursor shape when there is no standard oneAndy Shaw2013-02-201-0/+5
| | | | | | | | | | | | | | | | | | When the cursor specified is a bitmap one we cannot cache it based on the shape as the pixmap set on the cursor may be different. Therefore we should always create a new cursor in this instance. Change-Id: I2c201590ff632490d76c1b423908ae32aa584eb6 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| * Fix focus handling of native child widgets in xcb.Gunnar Sletta2013-02-193-2/+25
| | | | | | | | | | | | Change-Id: If4d596195624011142bff6853849a23064e478df Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> (cherry picked from commit fc663b5f9aae16fe6a03160e3eb148a5f742ac58)
| * QNX: Don't crash with 0 by 0 sized windowsSergio Martins2013-02-191-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | In the rare event of an invalid sized window, the application crashes because libscreen doesn't like creating empty buffers. Not creating the buffers at all would also be a solution, if we didn't have QPainter crashes due do null paint devices. Change-Id: I561d0082576b6226dd52129f9640952ba46273c8 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * QNX: Print the buffer size before crashing, for debug purposes.Sergio Martins2013-02-181-0/+1
| | | | | | | | | | Change-Id: I2d423ee3717bb09b7bb2c63f645e5315be1fa611 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Fixed EGLFS reporting impossibly high physical dimensions.Samuel Rødal2013-02-191-13/+62
| | | | | | | | | | | | | | | | | | If FBIOGET_VSCREENINFO doesn't give us sensible values we need to default to something instead. Refactor the code that queries the resolution and depth to behave the same way. Change-Id: Id2b3fc41349a74610856273b10281f744612890b Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Frederik Gladhorn2013-02-183-29/+26
|\ \ | | | | | | | | | refs/staging/dev
| * | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-02-183-29/+26
| |\| | | | | | | | | | | | | | | | | | | Conflicts: src/widgets/styles/qmacstyle_mac.mm Change-Id: If8326db9e7da3cbf45dbf7475fdff9915c7723b1
| | * Fix the GL_CONTEXT_FLAG_DEBUG_BIT checkFredrik Höglund2013-02-152-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | Use the correct enum. GL_CONTEXT_FLAG_DEBUG_BIT does not have the same value as GLX/WGL_CONTEXT_DEBUG_BIT_ARB. Change-Id: I7d90da54ca1ff526c8b00669b486a68424fc8dfb Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
| | * Fix globalPos() in scrollwheel events on OSX.Josh Faust2013-02-141-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The window position was getting passed as both the window and global positions. QTBUG-29543 Change-Id: I24746675e5ba45adbd054742877bd2fe783d6608 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| | * Fix the GL_CONTEXT_PROFILE_MASK checkFredrik Höglund2013-02-132-19/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A bit mask can have more than one bit set, so we can't use a switch statement here. Also use the correct enums, and make sure that the profile is set to QSurfaceFormat::NoProfile when the OpenGL version is less than 3.2. Change-Id: I6d2c4e35d4fb3d87fd47c9724cb415f8619a7b95 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
| | * Fix the GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT checkFredrik Höglund2013-02-132-2/+2
| | | | | | | | | | | | | | | Change-Id: I83dc92085c81b8b0c71502ea71878b5e85cbbacc Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
| | * Check for GLX_ARB_create_context_profile before specifying a profileFredrik Höglund2013-02-131-1/+2
| | | | | | | | | | | | | | | Change-Id: Idc4982c039f8a6a304d9ce5ce6736d518fb0ef00 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* | | QScreen::refreshRate would return 0 on Mac OS XGunnar Sletta2013-02-181-1/+3
|/ / | | | | | | | | | | | | | | | | | | | | | | The function we use to get the actual vsync on cocoa is documented to return 0 if the monitor is not a CRT monitor. A refreshrate of 0 means we have vsync deltas of 1000/0 which cause problems elsewhere. It is better to use the "default" value in this case as it will be closer to correct than 0. Change-Id: Id08007e40a9af5e42f13a07628fcad5fd3a7d0dc Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* | Cocoa QPA: Make QCocoaMenu::menuItemAt() more robustGabriel de Dietrich2013-02-181-1/+4
| | | | | | | | | | Change-Id: I2c68f87eb1a4926ca5bd0bfcc842ab9c56c99cd7 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* | Added QOffscreenSurface class.Yoann Lopes2013-02-187-12/+118
| | | | | | | | | | | | | | | | | | | | | | | | Inherits QSurface and allows to use OpenGL from an arbitrary thread. Platform plugins can implement QPlatformOffscreenSurface, otherwise an invisible QWindow is used by QOffscreenSurface. This patch includes an implementation of QOffscreenSurface for XCB and EglFS platform plugins using pbuffers. Change-Id: I57b4fc1db417331f34826dcfa754b7698782fde4 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* | KMS QPA Plugin: use preferred mode when selecting modeanknight2013-02-181-4/+8
| | | | | | | | | | | | | | | | | | | | This should select the best mode (likely the currently running mode) for the display instead of the first one found. The built-in mode was left as a fallback. Change-Id: I4e1bc798df6f310b001566ab76cb9def3224a7ed Reviewed-by: Andy Nichols <andy.nichols@digia.com>
* | KMS QPA Plugin: use GBM cursor writeranknight2013-02-182-56/+19
| | | | | | | | | | | | | | | | | | GBM provides a way to write directly to a buffer object that gets set as the drmMode cursor. This eliminates the need to create a GL texture and opens this class up to platforms that support GBM but not OpenGL. Change-Id: I7297827387ef9a717a5287b5484f14c9987b4158 Reviewed-by: Andy Nichols <andy.nichols@digia.com>
* | KMS QPA Plugin: .pro file improvementsanknight2013-02-181-2/+3
| | | | | | | | | | | | | | | | - Use qtHaveModule to check for OpenGL - Add __GBM__ to pick up the correct native types in the Mesa EGL headers Change-Id: Idfc0e81e95672b08ba8f259b9d7edf2b25fd1bad Reviewed-by: Andy Nichols <andy.nichols@digia.com>
* | Remove ifdefs for supporting Mac OS <= 10.5Tor Arne Vestbø2013-02-1810-84/+4
| | | | | | | | | | | | | | | | Qt5 requires Mac OS 10.6, so we can remove checks such as if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 Change-Id: Iea21727a277291148704ecf9677ed0b68c24920f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Giuseppe D'Angelo2013-02-1739-138/+351
|\ \ | | | | | | | | | refs/staging/dev