summaryrefslogtreecommitdiffstats
path: root/src/platformsupport
Commit message (Collapse)AuthorAgeFilesLines
* Fix no-opengl build with eglLaszlo Agocs2014-03-171-17/+20
| | | | | | | | | | | | Disable eglfs and similar plugins when opengl is not enabled. (but egl is present) GL-dependent parts of eglconvenience need to be skipped too. Task-number: QTBUG-37457 Change-Id: I44d49495241551bc7b1f565aa0b5ace9f310628e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Cocoa: Set "Stereo" OpenGL format option.Morten Johan Sørvig2014-03-171-0/+3
| | | | | | | Task-number: QTBUG-35548 Change-Id: I60b633ae44b8b4b353a7328eb0922b9301e1460c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Don't populate font families using localized family names on OS X/iOSTor Arne Vestbø2014-03-131-5/+5
| | | | | | | | | | | | The font database and QFont should have normalized font family names, so using CTFontDescriptorCopyLocalizedAttribute is not a good idea. If the feature of reporting the localized name of a font family or style is needed in for example the font selection dropdown or dialog, it should be exposed as an explicit property of the font. Change-Id: Iaa15ad861043f4c78a38080608b6fe4d99efee18 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fix a few build warnings on iOS due to unused functionsTor Arne Vestbø2014-03-131-0/+4
| | | | | Change-Id: If345a4137986a7d5032a2b48d92c08bc58e02144 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Remove need to populate font database on OS X to get fallback familiesTor Arne Vestbø2014-03-112-45/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Populating the whole database takes a while, and it's very easy to trigger the fallback family code path through eg. matching or getting the default font family from QFont. Instead of relying on populate to resolve family name to a PostScript name (which was required when using CTFontCreateWithName), we instead use the CTFontDescriptorCreateWithAttributes() function to create a descriptor based on the family name, and then use CTFontCreateWithFontDescriptor(). The other way around, we use CTFontDescriptorCreateWithNameAndSize, and then pull out the family name from the descriptor. The need for creating a CTFont for private fonts (eg '.Apple Symbols Fallback') does not seem necessary anymore, as tested on 10.7-10.9. The disadvantage of creating font descriptors instead of re-using the data computed by population is that we're doing the same work twice, but the end result is making the font database more lazy, and the 80% use-case is assumed to be that you're only interested in the fallback of a small number of fonts, which means you don't want to populate all of the fonts in the system (taking about 1100ms on the test system). Looking up the fallback of a single family or style now takes about 15-25ms. Task-number: QTBUG-37165 Change-Id: I6b904dbe796a3f236919d778d0168fdef9a20e69 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Add EGL_KHR_create_context supportLaszlo Agocs2014-03-102-36/+123
| | | | | | | | [ChangeLog] GLES3 and desktop OpenGL are now fully supported with EGL Task-number: QTBUG-37332 Change-Id: Ic695db573d90b3a204941d105a370f5c63182b63 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* egl: Choose GLES3 capable configs when neededLaszlo Agocs2014-03-101-2/+13
| | | | | | | | | | | | | | Passing OpenGLES and majorVersion 3 in a QSurfaceFormat selects GLES3 in case it is supported. This works fine already now, but is not safe since the config choosing logic does not request a GLES3-capable configuration and so it may end up with a non-GLES3 compatible one. This is now corrected by passing the EGL_OPENGL_ES3_BIT_KHR bit when EGL_KHR_create_context is available. Change-Id: Iacee1e1819b944c0f7c1062666106abddf59272b Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* egl: Update the OpenGL version in the context's QSurfaceFormatLaszlo Agocs2014-03-101-0/+31
| | | | | | | | | | The GLX and WGL support code does this already. Do it for EGL too since requesting OpenGLES with majorVersion 3 results in GLES3 (where supported) and in this case the expected majorVersion in QOpenGLContext::format() is 3. Change-Id: I73d61d7569e6ebaa91aef57fb1b0051a77a73355 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Remove unused parameter from QEGLPlatformContext constructorLaszlo Agocs2014-03-103-11/+4
| | | | | | | | The API is chosen via QSurfaceFormat, the constructor argument is ignored. Remove this historical artifact. Change-Id: I4a5c1e12cb297de22f239ad0a6747c1c36168eed Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* qmacmime: bugfix unicode::canConvertRichard Moe Gustavsen2014-03-061-1/+2
| | | | | | | | | | | | | | | The UnicodeText converter is a bit special since it can convert to both utf8 and utf16 for text/plain. But since flavorFor("text/plain") can only return one UTI, it returns utf16. And this means that canConvert will return false if given utf8 as argument. On iOS this is often the only format available on the pasteboard, which means that pasting text from another app app will fail. This patch will ensure that it returns true for both utf8 and utf16. Change-Id: I31697f1815c19113393a8ef48f2ead4d7f1078ec Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Cocoa/Platformsupport: move qmacmime from cocoa to platformsupportRichard Moe Gustavsen2014-03-064-0/+938
| | | | | | | Share qmacmime with iOS Change-Id: Ied1b6ed74f2d63ef34d818554827a6165651b6a1 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Avoid polluting debug output in eglfs and linuxfbLaszlo Agocs2014-03-061-8/+12
| | | | | | | | Size hints will not be implemented. Grabs maybe some day but the warnings should be silenced for now. Change-Id: I1f4861454d45e668c4d758c7f82940cd1136d0c8 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Prevent repeated and unnecessary font population QCoreTextFontDatabaseTor Arne Vestbø2014-03-052-19/+30
| | | | | | | | | | | | | | | | | | | | | | The platform font database is populated from QFontDatabase, through the static initializeDb() function, whenever the font database determines that the platform database has not been initialized (by checking if the font database is empty). There are other clients of QPlatformFontDatabase though, such as QFont, which uses the platform font database to check for the default family. The CoreText implementation of determining the default family relies on data that is computed during font population, and hence does an internal (self-triggered) populate. To prevent repeated populates as a result of calling QFont::defaultFamily() we guard the populate by a similar isEmpty() check as QFontDatabase does, but to ensure that this check works in the case of an invalidated font database, we need to propagate the font database invalidation down to the platform font database. Change-Id: I8d06c6f6fc5da6353c087335859eaca008c2f6a6 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Make QFontEngine::type() non-virtualKonstantin Ritt2014-03-052-2/+2
| | | | | Change-Id: I24ece90d6d8f96dad0c41a474a491b4ea96d97c3 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Get rid of QFontEngine::name()Konstantin Ritt2014-03-051-2/+0
| | | | | | | | It was only used in QFontCache debug output, and some engines weren't even report a name. Change-Id: I6cec4b75f105f5a4e1405f50188bebb3a3f04e33 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Dynamic GL: remove exporting symbolsLaszlo Agocs2014-03-042-5/+11
| | | | | | | | | | | | | | | | | | | | | Remove the opengl proxy for now. Later it will either be moved into a separate library or replaced by a QOpenGLFunctions-based approach. This means that the -opengl dynamic configuration is not usable for the time being. The rest of the enablers remain in place. The convenience function QOpenGLFunctions::isES() is now moved to QOpenGLContext and is changed to check the renderable type. This is extremely useful since besides supporting dynamic GL it solves also the problem of GL_ARB_ES2_compatibility (i.e. it triggers the real ES path when creating an ES-compatible context with a desktop OpenGL implementation). Task-number: QTBUG-36483 Task-number: QTBUG-37172 Change-Id: I045be3fc16e9043e1528cf48e6bf0903da4fa7ca Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Fix some typosSergio Ahumada2014-03-032-2/+2
| | | | | | Change-Id: I7dbe938bff5ac3ab50a0197f94bdb2f6c22fbd16 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
* Introduce a generic QFontEngine::canRender() implementationKonstantin Ritt2014-03-032-2/+2
| | | | | | | | ...which uses the recently introduced glyphIndex() method; get rid of re-implementations that did almost the same. Change-Id: I6d32d2cee6a31f57de6aee05ed8d120d4a1f4e9c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Introduce QFontEngine::glyphIndex(uint)Konstantin Ritt2014-03-032-0/+20
| | | | | | | | | ...an optimized drop-in replacement for the code like this: `stringToCMap(&uc, 1, &g, &numGlyphs, QFontEngine::GlyphIndicesOnly)` (aka "get the glyph index for exactly one Unicode character"). Change-Id: I22babf49f7cf28892d27533a5ac51ad449779f75 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Unify QFontEngine*::stringToCMap() behaviorKonstantin Ritt2014-03-031-0/+6
| | | | | | | | Ensure the params are valid and make QCoreTextFontEngine::stringToCMap() handle the unsufficient buffer case exactly like the other engines does. Change-Id: I078af37da917cf2bac709b12aa827ed4128e5f30 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Get rid of unused variableKonstantin Ritt2014-03-031-2/+0
| | | | | Change-Id: Ie90914c2110d32e573108a355a44dd459097a755 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Unify QFontEngine::getSfntTableData() behavior on all platformsKonstantin Ritt2014-03-021-7/+4
| | | | | | | | | | | | Being a most significant method in the font API, getSfntTableData() must behave in exactly the same way on all platforms. Briefly, it must return true if the table exists in the font, despite the other params, and always stores the table data length in 'length' param, thus reporting the amount of bytes actually needed to store the table data in a buffer. Change-Id: I7a15465020c1ea818ea46a05ea3b9b7e1cd60d14 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* eglfs: Improve cursors and hotspotsJonathan Liu2014-02-261-2/+2
| | | | | | | | | | | | | | | | | | | Improvements * Cursor atlas has been recreated using 32x32 cursors which avoids artifacts introduced from downscaling of the busy cursor * A white outline has been added to the cursors to improve visibility on black backgrounds * Hot spot positions have been tweaked; in particular, Qt::PointingHandCursor now has a correct hot spot at the tip of the index finger instead of the center The assert which checks that the number of hot spots equals the number of cursors had an off-by-one error as the first cursor is Qt::ArrowCursor which has an enum value of 0. To determine the number of cursors, 1 needs to be added to Qt::LastCursor. Change-Id: I266b6d4cc47d42219854aa5b7e2d8344eb3a920a Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Revert "Fix application font removal when using FontConfig"Eskil Abrahamsen Blomfeldt2014-02-251-128/+112
| | | | | | | | | | | | This reverts commit a4ff400e25c76a32ec8252285dda043f07b19c15. The patch caused a regression for bold fonts which is currently blocking the alpha of Qt 5.3, so lets revert it and try resubmitting a fixed version later to avoid delaying any release. Task-number: QTBUG-36929 Change-Id: I8d474b09b2270eb2f861853e60605429be08e2d9 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Normalize signal & slot signatures in connectionThiago Macieira2014-02-221-1/+1
| | | | | | | | | | | Profiling showed that Qt Creator spent 2% of its load time normalizing signals and slots. By pre-normalizing everything, we ensure that there is no runtime cost. Profiling after this commit and the others in this series shows that the cost dropped down to zero. Change-Id: Ifc5a2c2552e245fb9a5f31514e9dd683c5c55327 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* eglfs: Fix swapped red and blue with QOpenGLWidgetLaszlo Agocs2014-02-211-1/+6
| | | | | Change-Id: I0793d0b53c0e7df65fecfe43ef9daaf07413ea77 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Prevent top/left clipping of anti-aliased glyphs in CoreText font engineTor Arne Vestbø2014-02-191-3/+41
| | | | | | | | | | | | | | | | | Padding the bounding rect was not enough, as we failed to shift the glyph accordingly so that it would end up in the center of the bounding rect. We also didn't take subpixel-positioning into account, which may shift the position of the glyph too far to the right to be within the image size that we reserve. There are still cases where the glyphs seem clipped compared to the same text rendered with CoreText, but that's because we end up shaping the text slightly differently, resulting in different subpixel positions than what CoreText chooses. Change-Id: Icb88c829f86457b16bdecbc4c24b3f1c23448261 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Unify alpha map padding in CoreText font engineTor Arne Vestbø2014-02-191-9/+8
| | | | | | | | | | Instead of padding the image size manually, we rely on alphaMapBoundingBox to give use the right glyph metrics. For clarity, a few function arguments were renamed in the affected code. Change-Id: I84c31e613a1048ea839a390af70342e5388ed0cb Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Unify glyph format between QFontEngine and QFontEngineGlyphCacheTor Arne Vestbø2014-02-193-9/+9
| | | | | | | | | | | | Instead of the glyph cache having its own cache type that always mapped one to one to a font engine glyph format, causing confusion and needless conversions, the glyph caches now use QFontEngine's glyph format enum. This also removes the iffy use of an int for the glyphFormat in the font engines. Change-Id: I529bad5c179e004f63e152f7dcc311d298c3db98 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* QOpenGLTextureBlitter: Remove Origin location for the Target rectJørgen Lind2014-02-161-2/+1
| | | | | | | | | | | | | | | | | | | | | The Origin for Target rect was deemed a confusing concept. The current implementation would translate the target rect to the coordinate system specified. However, the order and "direction" of the vertices would always be the same. So drawing a texture in for one target rect defined in one coordinate system would paint the texture the same way as it would when a texture was drawn for a target rect drawn in the "opposite" coordinate system. The point with this was that if you wanted to "flip" the texture you would specify that with the source coordinate system. However, this approach breaks on different levels, such as QRect has functions which expects a top left coordinate system (ie. top() and bottom()). In the end Qt uses a top left coordinate system, hence QWindow specifies a top left coordinate system, and hence the api becomes easier if it is not possible to define the coordinate system of the target viewport. Change-Id: I7dd59b3718380876e87a4bff88381d7a1c7d58c1 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Consolidate StandardButton, ButtonRole and related static functionsShawn Rutledge2014-02-151-7/+7
| | | | | | | | | | Moving them into QPlatformDialogHelper for the convenience of both widgets and QtQuick.Dialogs. The main reason is to ensure that QtQuick.Dialogs does not need to depend on the widgets module, in order to re-implement the button box concept in a generic dialog. Change-Id: If400d215338d7cb6dade39d9de60e50b5e7515ef Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Dynamic GL switch on WindowsLaszlo Agocs2014-02-143-11/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The patch introduces a new build configuration on Windows which can be requested by passing -opengl dynamic to configure. Platforms other than Windows (including WinRT) are not affected. The existing Angle and desktop configurations are not affected. These continue to function as before and Angle remains the default. In the future, when all modules have added support for the dynamic path, as described below, the default configuration could be changed to be the dynamic one. This would allow providing a single set of binaries in the official builds instead of the current two. When requesting dynamic GL, Angle is built but QT_OPENGL_ES[_2] are never defined. Instead, the code path that has traditionally been desktop GL only becomes the dynamic path that has to do runtime checks. Qt modules and applications are not linked to opengl32.dll or libegl/glesv2.dll in this case. Instead, QtGui exports all necessary egl/egl/gl functions which will, under the hood, forward all requests to a dynamically loaded EGL/WGL/GL implementation. Porting guide (better said, changes needed to prepare your code to work with dynamic GL builds when the fallback to Angle is utilized): 1. In !QT_OPENGL_ES[_2] code branches use QOpenGLFunctions::isES() to differentiate between desktop and ES where needed. Keep in mind that it is the desktop GL header (plus qopenglext.h) that is included, not the GLES one. QtGui's proxy will handle some differences, for example calling glClearDepth will route to glClearDepthf when needed. The built-in eglGetProcAddress is able to retrieve pointers for standard GLES2 functions too so code resolving OpenGL 2 functions will function in any case. 2. QT_CONFIG will contain "opengl" and "dynamicgl" in dynamic builds, but never "angle" or "opengles2". 3. The preprocessor define QT_OPENGL_DYNAMIC is also available in dynamic builds. The usage of this is strongly discouraged and should not be needed anywhere except for QtGui and the platform plugin. 4. Code in need of the library handle can use QOpenGLFunctions::platformGLHandle(). The decision on which library to load is currently based on a simple test that creates a dummy window/context and tries to resolve an OpenGL 2 function. If this fails, it goes for Angle. This seems to work well on Win7 PCs for example that do not have proper graphics drivers providing OpenGL installed but are D3D9 capable using the default drivers. Setting QT_OPENGL to desktop or angle skips the test and forces usage of the given GL. There are also two new application attributes that could be used for the same purpose. If Angle is requested but the libraries are not present, desktop is tried. If desktop is requested, or if angle is requested but nothing works, the EGL/WGL functions will still be callable but will return 0. This conveniently means that eglInitialize() and such will report a failure. Debug messages can be enabled by setting QT_OPENGLPROXY_DEBUG. This will tell which implementation is chosen. The textures example application is ported to OpenGL 2, the GL 1 code path is removed. [ChangeLog][QtGui] Qt builds on Windows can now be configured for dynamic loading of the OpenGL implementation. This can be requested by passing -opengl dynamic to configure. In this mode no modules will link to opengl32.dll or Angle's libegl/libglesv2. Instead, QtGui will dynamically choose between desktop and Angle during the first GL/EGL/WGL call. This allows deploying applications with a single set of Qt libraries with the ability of transparently falling back to Angle in case the opengl32.dll is not suitable, due to missing graphics drivers for example. Task-number: QTBUG-36483 Change-Id: I716fdebbf60b355b7d9ef57d1e069eef366b4ab9 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* QOpenGLWidget and new-style compositing on eglfsLaszlo Agocs2014-02-139-147/+192
| | | | | | | | | Integrate with QOpenGLTextureBlitter, QOpenGLWidget and friends. Change-Id: Ic2867b713a21a3d2820d546174fc9164b3dd220c Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-02-122-7/+2
|\ | | | | | | | | | | | | | | | | | | Conflicts: src/gui/image/qimage.cpp src/gui/text/qtextengine.cpp src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp src/printsupport/kernel/qprintengine_win.cpp Change-Id: I09ce991a57f39bc7b1ad6978d0e0d858df0cd444
| * Accessibility Linux: Report Active stateFrederik Gladhorn2014-02-112-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | The fixme comment is invalid since QAccessibleWidget actually checks for isWindow and sets the active state. This is messed up because in Qt 4 there was a work-around to set active for windows in a different code path. [ChangeLog][QtGui] Accessibility on Linux now reports the active state correctly. Change-Id: I9e2cf436b3ffa7ef28286ee49d6e582f179930c6 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* | Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Frederik Gladhorn2014-02-114-66/+111
|\ \ | | | | | | | | | refs/staging/dev
| * | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-02-074-66/+111
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/kernel/qguiapplication.cpp src/plugins/platforms/android/androidjnimain.cpp src/plugins/platforms/android/qandroidplatformintegration.cpp src/plugins/platforms/android/qandroidplatformintegration.h src/plugins/platforms/android/qandroidplatformopenglcontext.cpp src/plugins/platforms/cocoa/qcocoawindow.h src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/sql/doc/src/sql-driver.qdoc src/widgets/widgets/qtoolbararealayout.cpp Change-Id: Ifd7e58760c3cb6bd8a7d1dd32ef83b7ec190d41e
| | * Accessibility Linux: Fix all widgets reporting being editableFrederik Gladhorn2014-02-051-17/+10
| | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtGui] Accessibility on Linux reported all objects as being editable instead of just editable text items. Change-Id: I8bca2799a2e5b175b3ca515fee5dd02eae23829e Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
| | * Checking input mask before scanning evdev devicesCedric Chedaleux2014-02-051-12/+16
| | | | | | | | | | | | | | | | | | | | | | | | Adding device mask verification for static device discovery. DRM devices are no longer scanned if mask is set to input devices only Change-Id: Ibd2e77280c2d93c707ba7bdb84c4ae3cb0932178 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| | * Fix KDE calculated colors being all blackKimmo Leppälä2014-02-041-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | KDE calculated colors weren't set correctly rendering all calculated colors "Light", "Midlight", "Mid" and "Dark" as black. Issues fixed: * QFrame with frameStyle Box|Raised didn't look raised but instead just black border. * QMdiArea had black background * QToolBox separators were just black Change-Id: I5e06bafe280f73af12f23960ae68a8b35e8549ac Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Kimmo Leppälä <kimmo.leppala@digia.com>
| | * Fix compilation: testBit is only used if mtdev isn'tThiago Macieira2014-02-031-0/+2
| | | | | | | | | | | | | | | | | | | | | qevdevtouch.cpp:160:20: error: unused function 'testBit' Change-Id: Idd9eee9b916c694bdfb963c00eeb0eaaf5618d40 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| | * evdevtouch: Don't try to keep reading on EAGAINRobin Burchell2014-01-241-26/+47
| | | | | | | | | | | | | | | | | | | | | | | | This stops touching the screen (and not moving) consuming 80-90% CPU. The mtdev and non-mtdev codepaths have been separated for additional clarity. Change-Id: I0559a6bd80dab961fdb4a83ad50860a9aec6445c Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| | * EvdevTouch: Don't remove released touch data for Type B; only ignore slotRobin Burchell2014-01-221-8/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Type B protocol states that touch slots with an ID of -1 should be considered unused, but data should be retained if that slot becomes active again later. Instead of removing the contact from the contact list, only "disable" it. This contact can later be reused if the slot becomes active again. Change-Id: I827ae311841dd97f73a2c64d943658cd3f29eaf8 Done-with: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | EGL convenience: Guard Linux-specific code with Q_OS_LINUX.Raphael Kubo da Costa2014-02-101-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of "blacklisting" Unix platforms that don't have Linux headers, do the opposite and check for Q_OS_LINUX in the framebuffer code that has Linux-specific code. This should help fix the build on other Unices, such as the BSDs. Change-Id: Icb6edf34bb20c9a98843b6dc0e2a87ee71fcd046 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | glxconvenience: Add a QT_XCB_FORCE_SOFTWARE_OPENGL environment variable.Kevin Kofler2014-02-071-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The QT_XCB_FORCE_SOFTWARE_OPENGL environment variable is equivalent to LIBGL_ALWAYS_SOFTWARE for Qt 5 applications only. This is most useful with drivers that only support OpenGL 1. We need OpenGL 2, but the user probably doesn't want LIBGL_ALWAYS_SOFTWARE in OpenGL 1 apps. Together with http://pkgs.fedoraproject.org/cgit/qt5-qtbase.git/tree/10-qt5-check-opengl2.sh which goes into /etc/X11/xinit/xinitrc.d, it makes QML 2 just work on old hardware that supports only OpenGL 1.x in hardware. The scriptlet checks the glxinfo output for the OpenGL version and sets QT_XCB_FORCE_SOFTWARE_OPENGL if the major version is < 2. (The scriptlet requires xorg-x11-xinit and glx-utils.) Tested on a Radeon 9200 SE (RV280) that supports only OpenGL 1.3 in hardware. Change-Id: Ief80d283820d6336052b8f390a0030ba9b687492 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | | Decrease code duplicationKonstantin Ritt2014-02-066-30/+10
|/ / | | | | | | | | | | | | | | Check engine's supported scripts in a single place and remove unused script parameter from fontEngine(). Change-Id: Ic153803bef519320c370b058e77eac1a4d92afd0 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Make HarBuzz-NG the default shaper on MacKonstantin Ritt2014-01-311-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we dropped all platform-related shapers during the QPA refactoring, thus making HarfBuzz the only shaper on all platforms, we can not deal with AAT-capable fonts anymore. HarBuzz-NG now supports it's own shaper backend infrastructure, so the decision was to enable HB's CoreText shaper backend on Mac and simply make HB-NG the default shaper there. Task-number: QTBUG-36056 Change-Id: If22e24fd5cc00c25952934332a2f4123f38135a4 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* | eglfs: Mouse hotplugging supportLaszlo Agocs2014-01-316-7/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | On Embedded Linux with libudev support hotplugging was already working, except that the mouse cursor was not shown and hidden. This is now corrected so that the cursor disappears when all mice become disconnected and reappears if a mouse gets plugged in later on. [ChangeLog][QtGui] Mouse hotplugging is now fully supported in eglfs when running on Embedded Linux systems with libudev support enabled. Task-number: QTBUG-36374 Change-Id: Iec7c1557ba6085e3958dd357460cc032896fb174 Reviewed-by: Andy Nichols <andy.nichols@digia.com>
* | Get rid of QGlyphLayout::advances_yKonstantin Ritt2014-01-301-12/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...and thus consume 4 bytes less per glyph and increase the performance a bit. It seems, the only CTFontGetAdvancesForGlyphs() returns both x and y advances, though y advances are always equal to 0 for horizontal orientation and x advances are always equal to 0 for vertical orientation. Also, rename `advances_x` to `advances` for consistency and declare QGlyphLayout's data size in a single place. Change-Id: I56b20f893f8a6feb7aa870e3edbca99dd93ba2e2 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | REG: Fix font matching in FontConfigEskil Abrahamsen Blomfeldt2014-01-291-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change a4ff400e25c76a32ec8252285dda043f07b19c15 exposed a bug in the font matching in the FontConfig engine. FcFontMatch is documented to not work unless you call FcConfigSubstitute() and FcDefaultSubstitute() on the pattern first. We were neglecting to do this, but hiding the bug before since we were doing our own font matching and never reading back the file name from FC's match. When we started doing this, suddenly DejaVu Sans (for instance) would match its bold variant instead. Change-Id: Ie6b7026de24cfb0353dc892fa862d6ee79604f38 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>