Commit Graph

169 Commits (fedcaf0256f0094d77f171e4cdca2c4e2469e606)

Author SHA1 Message Date
Gatis Paeglis 466d65cd5b xcb: remove runtime check for xcb_poll_for_queued_event
xcb_poll_for_queued_event() was introduced in libxcb 1.8.
The minimal required libxcb version was bumped up to 1.9 in
1f5d791708. Before this version
bump we needed the runtime check to support older versions
of libxcb.

Updated connections in the event reader to use the new signal
and slot syntax. Removed threadedEventHandling() method because
now it is always 'true'.

Change-Id: I0bce61fd478a871d35e676239ee5280c4f40be8a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-10-12 10:21:22 +00:00
Alexander Volkov a34054c75e xcb: Extract QXcbWindow::isTrayIconWindow()
Introduce this static function to detect tray icon windows.
The old non-static method was unused, so drop it.

Change-Id: Ia97b8a857bd1807ecd56340efbc9b145844d593e
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-09-29 09:33:11 +00:00
Alexander Volkov 60cecc86f8 xcb: Initialize OpenGL integration only when required
In some cases OpenGL integration may be unnecessary, e.g.
an application may set Qt::AA_ForceRasterWidgets attribute
and don't use OpenGL in any other way. In addition OpenGL
initialization can take noticeable time on some configurations.
So do it on demand only.

Change-Id: If88953f8d5c826bc96fd49eb397b5e1ad693546d
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-09-29 09:33:04 +00:00
Friedemann Kleint 67cc8fea10 XCB: Do not create instance of QPlatformIntegration for invalid displays
Extract a static factory for QXcbConnection objects and pass
potential connection errors to qxcbmain.cpp, which will then return 0.

Task-number: QTBUG-68859
Change-Id: I9c0faf82462a78a576360c19bef251ad1d034d84
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-08-20 16:52:29 +00:00
Qt Forward Merge Bot 1783fca897 Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/xcb/qxcbintegration.cpp

 Conflicts git missed:
	src/plugins/platforms/qnx/qqnxglcontext.cpp

Change-Id: I0582cdc9e66e43efe79038b9c43d4f9572ac88fc
2018-07-17 10:19:22 +02:00
Thiago Macieira 89f7e090ef XCB/Xlib: make sure we don't get problems for sys headers using register
Found while compiling on FreeBSD 11.2 (clang 6 update has the warning):

/usr/local/include/X11/Xlibint.h:675:7: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]

Change-Id: I117816bf0f5e469b8d34fffd153e6482ccaed69f
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-07-11 19:18:38 +00:00
Alexander Volkov 5cf6f51b4c xcb: Fix artifacts on the tray background with lock screens
With the current method of painting the tray icon with 24 bpp
visuals we grab the window's background once on the first show
and then use it in all paint operations. This leads to a wrong
background if an application shows the system tray icon when
the lock screen is active.

We can avoid this by painting with XRender when it's available.

This change introduces QXcbSystemTrayBackingStore and moves the
selection of a suitable painting method from QSystemTrayIconSys
into it. In addition the visual for the window is selected
according to the system tray specification and the platform window
for the tray icon is created without needless OpenGL and Vulkan
support.

Task-number: QTBUG-55540
Change-Id: Ib3ca42bc02dcbdd4ccfe5d6e23f870ef22f0d25a
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-07-10 20:03:53 +00:00
Gatis Paeglis 7a7c722782 dnd: send DragEnter and DragMove on DnD start
This was a regression from Qt4 and also is the documented behavior.
In addition this patch fixes various issues with cursor shape updating
that were discovered along the way and that are necessary for testing
the new changes.

The code in QGuiApplicationPrivate::processDrag() also needed a fixup,
particularly the resetting of QGuiApplicationPrivate::currentDragWindow.
Without this fix we would get DragMove (the one that immediately follows
the DragEnter) only for the first DragEnter event. For example when dnd
starts on mouse press then for mouse click we would get:

<click> DragEnter->DragMove->DragLeave <click> DragEnter->DragLeave

but the expected is:

<click> DragEnter->DragMove->DragLeave <click> DragEnter->DragMove->DragLeave

Task-number: QTBUG-34331
Change-Id: I3cc96c87d1fd5d1342c7f6c9438802ab30076e9e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2018-06-25 12:45:47 +00:00
Liang Qi 096e37910d Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	.qmake.conf
	src/corelib/kernel/qeventdispatcher_cf.mm
	src/gui/kernel/qguiapplication_p.h
	src/gui/kernel/qwindowsysteminterface.cpp
	src/gui/kernel/qwindowsysteminterface.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/cocoa/qnswindowdelegate.mm
	src/plugins/platforms/ios/qioseventdispatcher.mm
	src/plugins/platforms/windows/qwindowsdrag.h
	src/plugins/platforms/windows/qwindowsinternalmimedata.h
	src/plugins/platforms/windows/qwindowsmime.cpp
	src/plugins/platforms/winrt/qwinrtscreen.cpp

Change-Id: Ic817f265c2386e83839d2bb9ef7419cb29705246
2018-06-07 19:10:53 +02:00
Joerg Bornemann 9f27bfb31a Make sure we can build with -no-feature-draganddrop
We move QInternalMimeData to a separate file, because this class is
used, even if draganddrop is disabled. From now on, include
qinternalmimedata_p.h instead of qdnd_p.h for QInternalMimeData.

Change-Id: I594e08e2e90d574dc445119091686b4b69e4731b
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-05-29 18:31:35 +00:00
Gatis Paeglis 10b3286313 qpa: improve API to support DnDs from other processes
... instead of using a hack of directly accessing QGuiApplication
members.

The current QPA API was bad for two reasons:

1) It expects platform plugin authors to know about
internals of Qt Gui, particularly that QGuiApplication
uses QGuiApplication::{mouseButtons,keyboardModifiers}
to construct QDragMoveEvent and QDropEvent events. Which
results in the second reason why this is bad.

2) Platform plugins should not directly access member
variables of QGuiApplication, just to make sure that
QDragMoveEvent and QDropEvent events contain correct state.
Platform plugins should instead use QWindowSystemInterface
to communicate with Qt Gui (which is also the solution here).

The solution is to extend QWindowSystemInterface::handle{Drag,Drop}
to require mouse/keyboard state. We already do this for
some of the other methods, so it is nothing extraordinary.
This type of interface is also _required_ to support
drag-n-drops from other processes. We can't use
QGuiApplication::{mouseButtons,keyboardModifiers} when the
drag originates from another process, instead we need to
query mouse/keyboard state from the system.

This patch fixes drag-n-drops from others processes on XCB
platform plugin.

Task-number: QTBUG-57168
Change-Id: I3f8b0d2f76e9a32ae157622fef801829d629921d
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-05-04 10:44:15 +00:00
Gatis Paeglis b2035d38e8 xcb: minor cleanups around QT_CONFIG(xcb_xlib)
- Remove unused createVisualInfoForDefaultVisualId() function.
  This amends dff3c0f14f.

- Inline QXcbConnection::xlib_display().

- Don't nest QT_CONFIG(xcb_native_painting) in QT_CONFIG(xcb_xlib).
  configure.json already checks for the dependencies, we don't need
  to do that again in *.h/*.cpp.

Change-Id: If39912e67ce9baa31faf091bebe120bac5cf6876
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2018-04-09 18:14:47 +00:00
Liang Qi 65a97fccc6 Merge remote-tracking branch 'origin/5.10' into dev
Conflicts:
	tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp

Change-Id: If089d5010d15c33b3c1f13912d4386207456c1a9
2018-01-20 22:36:19 +01:00
Orgad Shaneh 6e5edb5a15 XCB: Replace qDebug with qCDebug
Change-Id: I984c3e3288aa4d0b7185ea88ae0c4cf4627a2da3
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-01-15 13:57:22 +00:00
Kevin Funk 58c14c4a7e Replace Q_NULLPTR with nullptr where possible
Remaining uses of Q_NULLPTR are in:
src/corelib/global/qcompilerdetection.h
  (definition and documentation of Q_NULLPTR)
tests/manual/qcursor/qcursorhighdpi/main.cpp
  (a test executable compilable both under Qt4 and Qt5)

Change-Id: If6b074d91486e9b784138f4514f5c6d072acda9a
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-09-19 11:53:55 +00:00
Liang Qi 112a4af107 Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
	examples/examples.pro
	qmake/library/qmakebuiltins.cpp
	src/corelib/global/qglobal.cpp
		Re-apply b525ec2 to qrandom.cpp(code movement in 030782e)
	src/corelib/global/qnamespace.qdoc
	src/corelib/global/qrandom.cpp
	src/gui/kernel/qwindow.cpp
		Re-apply a3d59c7 to QWindowPrivate::setVisible() (code movement in d7a9e08)
	src/network/ssl/qsslkey_openssl.cpp
	src/plugins/platforms/android/androidjniinput.cpp
	src/plugins/platforms/xcb/qxcbconnection.cpp
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/widgets/widgets/qmenu.cpp
	tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp

Change-Id: If7ab427804408877a93cbe02079fca58e568bfd3
2017-08-31 14:31:31 +02:00
Thiago Macieira cdc79f5ebc XCB: Don't core-dump if we can't connect to the X displayName
Exit with error, but don't crash.

Change-Id: Ie05c6480d8a44fda817ffffd14d9dfd8c951beef
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2017-08-16 15:52:02 +00:00
Oswald Buddenhagen ee07b912a1 Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
	src/plugins/platforms/xcb/qxcbconnection.h
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
	src/plugins/styles/mac/qmacstyle_mac.mm
	src/widgets/widgets/qdockarealayout.cpp
	src/widgets/widgets/qmainwindow.cpp
	src/widgets/widgets/qmainwindowlayout.cpp
	src/widgets/widgets/qmainwindowlayout_p.h
	tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
	tests/auto/other/macnativeevents/BLACKLIST
	tests/auto/widgets/widgets/qmenu/BLACKLIST

Change-Id: Ic8e724b80a65e7b1af25511b0e674d209265e567
2017-08-02 22:52:32 +02:00
Allan Sandfeld Jensen 286c53f217 Fix composition on xcb with misconfigured ibus
If ibus has been set, but either isn't installed or doesn't launch, all
composition fails on xcb. This ensures we fallback to "compose" which
is needed for working composition on XCB.

Change-Id: Ic2061c330bcb907759a13920c3eede14f3036563
Reviewed-by: René J.V. Bertin <rjvbertin@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-07-31 10:35:11 +00:00
Liang Qi 7f269a5db8 Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
	.qmake.conf

Change-Id: I43531e087bb810889d5c1fbfcdffb29b78804839
2017-07-06 13:54:25 +02:00
Liang Qi c2b224a758 Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
	src/corelib/io/qprocess_unix.cpp
	src/plugins/platforms/xcb/qxcbconnection.cpp
	src/plugins/platforms/xcb/qxcbwindow.cpp
	src/widgets/util/util.pri
	tests/auto/corelib/thread/qthread/qthread.pro
	tests/auto/corelib/thread/qthread/tst_qthread.cpp

Change-Id: I5c45ab54d46d3c75a5c6c116777ebf5bc47a871b
2017-07-04 16:05:53 +02:00
Alexander Volkov 46312b611b xcb: Use QT_CONFIG macro to check for xcb-sm, xcb-render, and xcb-glx
And remove the corresponding defines.
Note that XCB_USE_GLX and XCB_HAS_XCB_GLX were used as synonyms
because QGLXBufferSwapComplete was wrapped in #if defined(XCB_USE_GLX)
and at the same time it was used only when XCB_HAS_XCB_GLX
was defined.

Change-Id: I6c04b0ccfd5369b78b3e8af2ec39d38ae5c311dc
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-07-03 11:40:35 +00:00
Alexander Volkov b1381ea9eb xcb: Use QT_CONFIG macro to check for xcb-xlib
... and remove the XCB_USE_XLIB define.

This patch also removes the unnecessary checks for xcb-xlib in:

- qxcbglxintegration.cpp as this files is build _only_ when
xcb-xlib is present. From gl_integrations.pro:

 qtConfig(xcb-xlib):qtConfig(opengl):!qtConfig(opengles2) {
    SUBDIRS += xcb_glx
 }

This also would have been the right place where to define
XCB_USE_XLIB, instead of unconditional line in xcb_glx.pro:

 DEFINES += XCB_USE_GLX XCB_USE_XLIB

- qxcbnativeinterface.cpp as this cpp file does not use any
Xlib APIs directly, there is no need to include Xlib.h.

Change-Id: I531b5f1e79606fcfd1c63810cf51b7d5e9dc58a7
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-06-28 11:08:34 +00:00
Liang Qi ce09ef4313 Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
	src/corelib/io/qprocess_unix.cpp
	src/corelib/io/qprocess_win.cpp
	src/plugins/platforms/android/qandroidplatformintegration.h
	src/plugins/platforms/windows/qwindowscontext.cpp
	src/plugins/platforms/windows/windows.pri
	src/tools/uic/cpp/cppwriteinitialization.cpp
	src/widgets/doc/src/widgets-and-layouts/gallery.qdoc

Change-Id: I8d0834c77f350ea7540140c2c7f372814afc2d0f
2017-06-19 16:12:34 +02:00
Tor Arne Vestbø 744fd39e66 xcb: Don't destroy foreign windows
We can't rely on virtual dispatch in the destructor.

Task-number: QTBUG-61140
Change-Id: Ib1026caf126095778c24254775cb5a0bfecf3a38
Reviewed-by: Fabian Vogt
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-06-07 12:06:27 +00:00
Louai Al-Khanji 07942adb77 xcb: Add experimental legacy support for native X11 painting
This commit revives the old native QPixmap and QPaintEngine
implementations that were present in Qt4. The backing store supports
regular raster windows in this commit. Support for render-to-texture
widgets and OpenGL compositing will be added in a follow-up commit.

Change-Id: I80a9c4f0c42a6f68f571dfee930d95000d5dd950
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-04-21 10:56:02 +00:00
Liang Qi 9419dfe8ee Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
	src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h
	src/plugins/platforms/xcb/qxcbwindow.cpp

Change-Id: Ic747c3c50e68c005b425e7a1ec2a90965527c8bd
2017-04-04 18:09:33 +02:00
Anton Kudryavtsev ce124d5119 Prefer rvalue version of toLocal8Bit()
... to re-use existing buffers.

Change-Id: I5907a2e29d7f7dac04df5bf50769b47131e175d8
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-03-30 20:30:19 +00:00
Laszlo Agocs f1a23a5467 Basic Vulkan enablers
For Android, Windows and xcb. Verified on Win10 with NVIDIA, Win10
with AMD, Android with Tegra K1, Android aarch64 with Tegra X1, and
Linux aarch64 with Tegra X1 (Jetson TX1, L4T).

Introduce QPA-based Vulkan library loader, core function resolver, and
instance creation support. In addition to creating a new VkInstance,
adopting an existing one from an external engine is supported as well.

The WSI specifics are hidden in the platform plugins. Vulkan-capable
windows use the new surface type VulkanSurface and are associated with
a QVulkanInstance.

On Windows VULKAN_SDK is picked up automatically so finding vulkan.h
needs no additional manual steps once the LunarG SDK is installed.

[ChangeLog][QtGui] Added support for rendering to QWindow via the Vulkan
graphics API.

Task-number: QTBUG-55981
Change-Id: I50fa92d313fa440e0cc73939c6d7510ca317fbc9
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2017-03-17 16:12:03 +00:00
Tor Arne Vestbø c585802e94 QWindow: Remove "_q_foreignWinId" dynamic property
The platform plugins reading this out of the QWindow was a layering
violation, and propagates the notion that a window can shape shift
into representing a new native handle, while none of the platform
plugins support this.

A foreign QWindow is created via the factory function fromWinId(),
at which point we can pass the WId all the way to the platform
plugin as function arguments, where the platform will create a
corresponding platform-window.

The platform window can then answer the question of whether or
not it's representing a foreign window, which determines a few
behavioral changes here and there, as well as supplying the
native window handle back for QWindow::winId();

[ChangeLog][QtGui][QWindow] The "_q_foreignWinId" dynamic property
is no longer set nor read.

[ChangeLog][QtGui][QPA] The function createForeignWindow() has been
added to QPlatormIntegration and is now responsible for creating
foreign windows. The function isForeignWindow() in QPlatformWindow
has been added, and platforms should implement this to return true
for windows created by createForeignWindow().

Task-number: QTBUG-58383
Change-Id: If84142f95172f62b9377eb5d2a4d792cad36010b
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-02-22 07:58:07 +00:00
Allan Sandfeld Jensen 21f27c9a4d Enable gamma-correction on a face-by-face basis
Changes how we control if gamma-correction is done, and enables it for
the freetype CFF engine when stem-darkening is available.

The new code replaces existing hacks to force gamma-correction off
when using Freetype on X11 and Windows.

Change-Id: Ic703ca6965a3d81b204349e10f406c991b292edd
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-01-24 20:42:32 +00:00
Anton Kudryavtsev 87fefbc08e Plugins: use QStringBuilder more
Change-Id: I6f026b81fdc403d99d37dfa22ea6a27a95ead347
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-12-12 11:02:59 +00:00
Oswald Buddenhagen 135fcd5992 port to modularized platformsupport libraries
Change-Id: I20eb0e33abfd70b6a5240e7b6b0aa0425f2d2ee7
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-15 18:45:41 +00:00
Oswald Buddenhagen db732a07c0 remove apparently useless egl include
this file does not directly access egl.

Change-Id: I8b52aef9ee3a69a12370c3c6a1f9e2bb23051603
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-10-04 20:21:03 +00:00
Liang Qi 0ca4fcbc36 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/plugins/platforms/xcb/qxcbintegration.cpp

Change-Id: I2d71d06a55f730df19ace0dd3304238584a0497f
2016-08-18 11:07:51 +02:00
Andy Nichols 2b0e52757c Disable switchable widget compositing when using XCB in Parallels VM
The Parallels 3D hardware acceleration does not seem to play nice with
Qt Creator when switching between tabs that have OpenGL Qt Quick Content
and those that have just raster widget content.  QWidgetBackingstore has
the ability to switch how content is flushed depending on if the
SwitchableWidgetComposition capability is available.  Previously for XCB
it was always enabled, but should be disabled when using the GLX
integration for the Parallels VM.

Change-Id: I42e41456e0873f6780f5d0333dbfaaf8fcce4a5e
Task-number: QTCREATORBUG-16742
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-08-17 12:22:57 +00:00
Laszlo Agocs e694ced803 Add X11 support for the DRIVE CX
The spec, added in 5.7.0, simply defined WIN_INTERFACE_CUSTOM, leading
to the generic, non-X11 typedefs for the EGL native types. This is
fine for the typical embedded use, but is not what is wanted when
targeting xcb, and leads to disabling EGL-on-X support.

Therefore, move the define into a comon header and let the individual
libs decide by defining or not defining QT_EGL_NO_X11. This sets both
MESA_EGL_NO_X11_HEADERS and WIN_INTERFACE_CUSTOM in qt_egl_p.h.

This way Qt builds supporting all three of eglfs (DRM+EGLDevice),
wayland, and xcb (EGL) can be generated out of the box.

[ChangeLog][Platform Specific Changes][Linux] xcb with EGL and OpenGL
ES, as well as eglfs with the eglfs_x11 backend, are now supported on
DRIVE CX boards when using the linux-drive-cx-g++ device spec.

Done-with: Louai Al-Khanji <louai.al-khanji@qt.io>
Task-number: QTBUG-55140
Change-Id: I6f186d16612e170995e3bca1214bcabad59af08e
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-08-10 11:24:23 +00:00
Shawn Rutledge 28fab27503 add AA_CompressHighFrequencyEvents to control compression on xcb
7edd10e6c added this compression feature, but some applications may
need to disable it.

[ChangeLog][X11] It's now possible to unset AA_CompressHighFrequencyEvents
to disable the new X event compression feature that was added in 5.6.0.
This is a replacement for the WA_NoX11EventCompression flag in Qt 4.

Task-number: QTBUG-44964
Change-Id: I37a9c8a4831f1c02eda0f03b54125f3255d25500
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2016-05-15 08:05:29 +00:00
Liang Qi 63ec10353d Revert "egl: Reshuffle headers to help less fortunate systems with X11"
This reverts commit ecf127505e.

ecf12750 breaks the build of qtwayland.

Change-Id: If8bf04f035aa47e4e867d201ec7d95b0d3e18317
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-05-04 09:00:34 +00:00
Laszlo Agocs ecf127505e egl: Reshuffle headers to help less fortunate systems with X11
EGL headers including X headers has traditionally been problematic due
to getting macros for Status, None, etc.

In most cases this is not an issue anymore because on embedded one will
almost always use a driver targeting the framebuffer or DRM/KMS and
therefore the EGL headers do not pull in X dependencies.

Furthermore, Mesa supports MESA_EGL_NO_X11_HEADERS which we set, avoiding
the problem altogether with Mesa regardless of targeting X11 or KMS.

However, other drivers do not have this option. On i.MX6 for instance,
targeting X11 is problematic due to not having EGL_API_FB defined, which
in turn means the EGL headers pulls in X headers in order to be able to
define the native display and window types as Display and Window.

Try to play nice with this use case by reshuffling the includes and
undefining the problematic names.

Task-number: QTBUG-52928
Change-Id: I059f26b340b6e442e7296055915d18f5a1ce7a7f
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-05-03 14:38:14 +00:00
Marc Mutz 80fd691340 QXcbIntegration: simplify a switch
... by aggregating similar blocks under multiple case
labels, and caching functions's return values.

Even saves a few bytes in text size on optimized GCC 6.0
Linux AMD64 builds.

Change-Id: I5784567a09732b4e55b64163b69e7a946f0783ae
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-04-26 13:28:16 +00:00
Marc Mutz 6417bbde85 QtBase (remainder): use printf-style qWarning/qDebug where possible (I)
The printf-style version of QDebug expands to a lot less code than the
std::ostream-style version. Of course, you pay in type safety (but
compilers warn about it these days), you cannot stream complex Qt
types and streaming QStrings is awkward, but in many cases you
actually improve on readability.

But the main reason is that something that's not supposed to be
executed under normal operation has no business bloating executable
code size.

This is not an attempt at converting all qWarnings() to printf-style,
only the low-hanging fruit.

In this first part, replace
   qWarning() << ""
with
   qWarning("...").

Had to fix broken qImDebug() definition. Instead of defining it as
a nullary macro in the QT_NO_DEBUG case and as a variadic macro in
the other, define it in both cases, as is customary, as a non-function
macro so that overload selection works without requiring variadic
macro support of the compiler.

Saves e.g. ~250b in text size in QtPrintSupport on optimized GCC 5.3
AMD64 builds.

Change-Id: Ie30fe2f7942115d5dbf99fff1750ae0d477c379f
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2016-03-12 17:29:36 +00:00
Louai Al-Khanji f2ba6586a7 xcb: Do not create OpenGL-enabled platform windows for raster windows
Change-Id: I07d12441db6c7f289363417e21fec65bfcf08b78
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-03-04 14:25:46 +00:00
Liang Qi d456f87ece Merge remote-tracking branch 'origin/5.6' into dev
Conflicts:
	src/corelib/io/qfilesystemwatcher_win.cpp
	src/corelib/plugin/plugin.pri
	src/plugins/platforms/cocoa/qcocoaaccessibility.mm
	tests/auto/corelib/tools/qlocale/tst_qlocale.cpp

Change-Id: Id6824631252609a75eff8b68792e4d10095c8fc1
2016-02-11 08:25:04 +01:00
Sérgio Martins 01859cc121 Reduce allocations by using reserve()
Change-Id: If34fa53402985f6b3c5e7217bce4a1177af835b6
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-07 16:50:26 +00:00
Jani Heikkinen 1a88b2f768 Updated license headers
From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/

Updated license headers to use new LGPL header instead of LGPL21 one
(in those files which will be under LGPL v3)

Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-15 12:25:24 +00:00
Tor Arne Vestbø 420438b5d3 iOS: Implement support for QApplication::beep()
Vibrates the device or plays an alert sound on devices
that do not support vibration.

The other implementations of beep() have been moved to
QPlatformIntegration as a proper API instead of having
them as invokables in QPlatformNativeInterface.

Change-Id: Ic597dbef04b46d49862b070e78ddfc0d763829a2
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Kai Uwe Broulik <kde@privat.broulik.de>
2015-12-17 17:14:34 +00:00
Laszlo Agocs 5d63e325fa Avoid dynamic switching between backingstore composition paths
Make it opt-in because doing a normal backingstore flush does not seem to
work on Cocoa once we use OpenGL on the window. Windows and Linux should
be able to cope with this.

This means that platforms outside Windows and Linux will continue to have
the problem of having GL-based compositing enabled for ever after having a
QOpenGL/QuickWidget shown in the window once, but the issue is most
prevalent on Windows anyway, OS X machines can deal with OpenGL better
in general.

Task-number: QTBUG-49172
Change-Id: I30fd2efa95cc4f6eed9cf7f7613d0750355c775c
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2015-12-01 12:44:34 +00:00
Bernd Weimer b46fe39d94 Harmonize input context selection
Input context selection works differently across platforms. On some
platforms it is not possible to request a specific context at all
(e.g. Wayland). This will be unified, depending on the environment
variable "QT_IM_MODULE", you will get:
- null:  default (platform) context, if defined (otherwise no context)
- empty: no context
- set:   set one, if it exists and is valid (otherwise no context)

[ChangeLog][Platform Specific Changes] Haromnized input context selection.
QT_IM_MODULE environment variable will be taken into account.

Change-Id: Ic8f826fbc6ace25941cd19b9b086943e848fbe01
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Nedim Hadzic <nedim.hadzic@pelagicore.com>
2015-08-25 07:04:19 +00:00
Jørgen Lind d605883b5e Make it possible to use the -visual argument
for xcb applications to use a specific visual id when creating windows.

Also make it possible to retrieve the visual id of a specific window
with QXcbWindowFunctions::visualId(QWindow *window).

UINT_MAX is used as an invalid visualId.

Change-Id: If62ada119ce8f9174cc211f53bbf1ce1bb7d021a
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2015-04-15 11:54:34 +00:00