summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/qnx/qqnxwindow.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 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>
* QNX: Make QWidget::hide() work immediately.Sergio Martins2013-01-141-2/+8
| | | | | | | Change-Id: I3ea2556769703a8cd4c2931cc2332ab0733fbea6 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* QNX: Fix plugin compilationRafael Roquetto2012-12-041-1/+1
| | | | | | | | | Fix the plugin compilation after cd34da54269e6cd7fa5c18242d982736f022a14a renamed the QWindow API. Change-Id: I3ec4ce9ae2df9a66f6bf24a18277bc59c05d2e8e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* Removed temporary backwards-compat properties and accessors in QWindowShawn Rutledge2012-12-031-2/+2
| | | | | | Change-Id: I718b877e3b6c0b1191a932d934599d5c2f5aa958 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* QNX: Move buffer count check to appropriate locationRafael Roquetto2012-12-011-13/+14
| | | | | | | | | | | The buffer count check should take place right after buffers are created. For some reason, the buffer count value inside libscreen may become incosistent during the course of the program. Change-Id: Icbbaf4734eac5b0c5c95bdd93771899f9fcdb7db Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
* QNX: Fix crash due to re-entering QToolTip::show().Sergio Martins2012-11-211-2/+6
| | | | | | | | | | | | | | | | | | | The flushWindowSystemEvents() was added to send the geometry event synchronously. A side effect was that all input events were also sent. We don't want that. We're probably in setGeometry() because some other input event brought us here, and it's still in the call stack. One crashy example is the static method QToolTip::show() which uses static variables([1]). If we process input events while the first QToolTip::show() is still on the call stack, it will trigger a second one, deleting stuff ([1]) that the first invocation will still need once the stack unwinds. Change-Id: Iea22419a7f386d6b6231404666092340dfd1afed Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* QNX: Query dynamic buffer count at runtimeRafael Roquetto2012-10-261-1/+13
| | | | | | | | | | | While unlikely, there are cases in which QQnxWindow::renderBuffer() is called before the window buffers have been created. Without this check, the program will abort on QQnxBuffer constructor, since the value that will be passed to it will be of an invalid buffer. Change-Id: I9ad5926dca856570032dcf10b6975e8f3364c284 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QPlatformWindow: change API for QPlatformWindow::setWindowStateRichard Moe Gustavsen2012-10-171-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | The current implementation requests the platform window to set the window state if it can, and return the actual window state back. The problem with this approach is that the platform window is created as late as possible, so a call to QWindow::setWindowState would in many (most?) cases never be forwarded to the platform window (instead, the platform window is responsible to check the current window state upon creation). As such, the window state might be left unsynched with the platform window. This patch suggests removing the return value from QPlatformWindow::setWindowState. This will at least be consistent, so that setting/getting state would produce the same result independent of delayed window creation. If needed, we can later add new API to QPlatformIntegration or QPlatformWindow for querying supported/actual window state. Change-Id: Ie43f56169656854a765ce88b47a808f8f3d51bb4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Remove handleSynchronous* functions.Morten Johan Sorvig2012-10-101-1/+2
| | | | | | | | | | | | | | | | | | | | There are now two different ways to implement synchronous event processing. The platform plugins can choose which one to use. 1) flushWindowSystemEvents() Use to flush the event queue at one point, making preceding calls synchronous. 2) setSynchronousWindowsSystemEvents(bool enable) Makes all handle* functions synchronous, bypassing the event queue completely. Change-Id: I020b80c731fd13f855a377d7c91d06a4e39b6a0b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* QNX: Only set parent window if it is not NULLRafael Roquetto2012-10-011-1/+1
| | | | | | | | | | | | | There are cases where a widget has a parent, but is also a toplevel window at the same time, causing the system window to have no parent. For instance, a QMenu usually has a QMenuBar as a parent, however QMenuBar itself does not have its own platform window, as opposed to QMenu. Thus QMenuBar::parent == QMainWindow (for example), but QMenuBar::platformWindow == 0x0; QMenu::parent == QMenuBar, but QMenu::platformWindow != 0x0 (which is QMenuBar's value). Change-Id: Ib203fa1b85f5f20ef53366c80d6752d6384a202d Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* QQnxWindow: use a proper castMarc Mutz2012-09-291-4/+1
| | | | | | | | | Replace a C-cast with a const_cast. Casting doesn't care about nullptr, so don't check for one. Change-Id: I18a3e8f21d73b73385e567c7ceaf64e36aaa2cf3 Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNX: fix bug on window hierarchy listRafael Roquetto2012-09-281-8/+6
| | | | | | | | | removeFromParent() must not be called from raise()/lower(), because it wrongly sets m_currentParent to 0, causing the parent/child link to be broken after a call either of these methods. Change-Id: I58f847dc4a46f2cf120cb3acf230bac46bcf24f5 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* QNX: fix assert condition on the destructorRafael Roquetto2012-09-281-1/+1
| | | | | | | | m_childWindows must be 0 (and not > 0), since at this point it should have no children. Change-Id: I149e34849cab2d56f8617cc04fc6bf95c0476e4c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNX: use assert on QQnxWindow destructorRafael Roquetto2012-09-281-5/+4
| | | | | | | | | This makes it clear that the m_childWindows size must be 0 at this point, indicating otherwise an inconsistency in the logic of the child windows management. Change-Id: I04e418bc6e1d23681bd96f4d619cde9645dc6a22 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-23/+23
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* QNX: Ensure that m_requestedBufferSize is properly initialisedSean Harmer2012-08-031-1/+2
| | | | | | | | | | | | This solves a new corner case resulting from the recent refactoring of QQnxWindow::setGeometry() that occurs when using a plain OpenGL backed window in a single threaded environment and the user code calls QOpenGLContext::makeCurrent(this) in the QWindow subclass ctor. Change-Id: Iaf07fbff1cb2743f5706020a8d657a82cb9f2255 Reviewed-by: Kevin Ottens <kevin.ottens.qnx@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Revert "Move QWindowSystemInterface out of qpa."Paul Olav Tvete2012-08-031-1/+1
| | | | | | | | | | | | | | This reverts commit 784a877d3cd9a1a75aca9c83146389503a966071. Conflicts: src/plugins/platforms/cocoa/qcocoawindow.mm src/testlib/qtestkeyboard.h src/testlib/qtestmouse.h src/testlib/qtesttouch.h Change-Id: Iebfed179b3eb7f30e4c95edcae5a8ad6fd50330e Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* QNX: Do not send geometry change events to Qt too earlySean Harmer2012-08-011-22/+30
| | | | | | | | | | | We explicitly do not send geometry change events to Qt from QQnxWindow from the constructor. This prevents us from ending up in resizeEvent() reimplementations from the QWindow ctor. Change-Id: I045b35aa7eb23890772fe131c3d19314252f6a5a Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Kevin Ottens <kevin.ottens.qnx@kdab.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Move QWindowSystemInterface out of qpa.Stephen Kelly2012-07-191-1/+1
| | | | | | | | Public QtTest headers require it, so all unit tests would have to use private Qt headers otherwise, which is not practical. Change-Id: I5d4466ec30b6a57ebdfc34413e716e657eb51368 Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* QNX: Fix flushing the backing store to non-owner windowsThomas McGuire2012-07-131-0/+13
| | | | | | | | | | | | Multiple windows can share the same backing store, which we did not take into account. Don't ignore the window parameter in flush() to fix that. Change-Id: I4f98bba34d4da9134163e478cb78cab4ca0358d2 Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QNX: Extract and move adjustBufferSize() functionThomas McGuire2012-07-131-0/+7
| | | | | | | | Change-Id: Ia1719314460b9c51d6eba04ab1c43f02be1777b6 Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QNX: Apply state from QWindow when creating new QQnxWindowThomas McGuire2012-07-131-2/+5
| | | | | | | | | | | Otherwise things like the window position and the parent/child relation were wrong. Change-Id: Ibe22a54f093f187e510f9c4258db2d80abe54a81 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QNX: Rename copyBack() to blitPreviousToCurrent()Thomas McGuire2012-07-121-5/+5
| | | | | | Change-Id: I12cff8f4533f9a257b85d2a2db6ee3ef4a0c9751 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNX: Factor out blitHelper() functionThomas McGuire2012-07-121-30/+28
| | | | | | Change-Id: If4d671aae557065d502c3c134f50c89c621cb145 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNX: Add comment in post() explaining how buffering worksThomas McGuire2012-07-121-0/+22
| | | | | | Change-Id: Ieb87ea1bd926700277bf90c6a50ae89f1a8da1c2 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Suppress QWindowSystemInterface inclusion warnings.Girish Ramakrishnan2012-07-031-1/+1
| | | | | | | | | | | | | Since QWindowSystemInterface is now part of QPA API. The correct inclusion is: #include <qpa/qwindowsysteminterface.h> #include <qpa/qwindowsysteminterface_p.h> Bulk of the work was done by: find . -type f | xargs sed -i -e 's,#include <\(QtGui/\)\?QWindowSystemInterface>,#include <qpa/qwindowsysteminterface.h>,g' Change-Id: If75fc32611e72ef1cf58505794def375b1acf74a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* QNX: Enable threaded OpenGL rendering on QNXSean Harmer2012-07-031-17/+24
| | | | | | | | | | | | | | The only complicated aspect to this was deferring EGLsurface re-creation as a result of window geometry changes (e.g. when we receive an orientation change event). To allow this to be done in a controlled way we defer the surface manipulation until the next call to QQnxGLContext::makeCurrent(). Change-Id: I8062d3e4d19220a822fbc3b8ca563bb1e3be09d0 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* QQnxWindow: properly scope a local variableMarc Mutz2012-06-291-4/+1
| | | | | | Change-Id: I71f1052f614f4e926acf2c2b76963770f7b35c96 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNX: Don't detach when iterating over child windowsThomas McGuire2012-06-281-19/+10
| | | | | | Change-Id: I55dcc1d188a2c45a11b0ab6a194625b50906eca9 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNX: Make geometry changes sync to fix QWidget::showFullScreen()Thomas McGuire2012-06-281-1/+1
| | | | | | | | | | These can't happen async, as otherwise the geometry of the widget is changed too late, having the effect that QWidget::show_sys() would overwrite the window geometry again. Change-Id: Id60d009867a5b282ac14c112c872af1075660732 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNX: Add support for window statesThomas McGuire2012-06-271-1/+39
| | | | | | | | | Now QQuickView::showFullscreen() works as expected. QQuickView has no fallback for platforms without window state support, as opposed to QWidget. Change-Id: I9c41fe563ea1f6d117eaebd3ea1db87465142b85 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNX: Rationalise the usage of qDebug() to remove lots of #ifdef'sSean Harmer2012-05-251-60/+28
| | | | | | Change-Id: I097e4af86a6a0941f4fd7e122970f88ba536ab38 Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com> Reviewed-by: Andriy Golovnya <andriy.golovnya@googlemail.com>
* QNX: Recreate EGL surface when the window geometry changesKevin Ottens2012-05-241-0/+16
| | | | | | Change-Id: Ic578e9c3f4d8f70bcac0d95f59942cd2724aee51 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
* QNX: Advertise geometry changes to Qt event systemKevin Ottens2012-05-241-0/+2
| | | | | | | | | Some QWindow subclass rely on those events to be sent to know when the window geometry changes (e.g. QQuickCanvas). Change-Id: I16d3928803d09761f265544fdf10a5d080fccc17 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
* Build the QNX plugin with -no-opengl enabled.Stephen Kelly2012-04-231-0/+8
| | | | | | Change-Id: I776a3eb0d7ada4399b8c191bbfa1e3ed9236b20e Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Send Expose event when top level window becomes visibleKevin Krammer2012-04-231-0/+8
| | | | | | | | Change-Id: I0b45c27fa03bbe073c88ce8d01d9fb283f4051c1 Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Rename offset() to setOffset()Thomas McGuire2012-04-031-3/+3
| | | | | | | Change-Id: Iacf7b0a7f3cb3745711fe646e14317be1711d891 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Fix adding and removing of windows to their screenThomas McGuire2012-04-031-7/+2
| | | | | | | Change-Id: I5e0edf1515db60689c86b16b978863ae9e49bfdb Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Remove static methods in QQnxScreenThomas McGuire2012-03-301-10/+29
| | | | | | | Change-Id: If0fd910848ba70d3b0a2d948065b09337f8e51c3 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Don't assume windows and GL contexts are created on the primary screenThomas McGuire2012-03-301-2/+1
| | | | | | | Change-Id: Ib4f1c377bf93b1041b5f5e3fc56c0e01e35aeb38 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Rename blackberry QPA plugin to QNXSean Harmer2012-03-121-0/+665
Changing the naming scheme from Blackberry to QNX in line with pattern of using platform names. Change-Id: I048a6a18010bc932311d63c8dde19ccab97894c8 Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>