Commit Graph

18075 Commits

Author SHA1 Message Date
Konstantin Ritt
5dfe7b5fed Drop dead code
The QFontEngineMulti's `base` font engine always non-null.

Change-Id: I5092b66bc839a6a3216ffa0b0afe55a8b62be620
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-31 17:27:24 +02:00
Paul Olav Tvete
eccf1c51a6 Android: input method fixes for SwiftEdit keyboard
* Report correct pre-edit information when calling updateSelection()
  on endBatchEdit()
* Fix getExtractedText() to report the correct offset and cursor position,
* Fix setSelection() to use the correct cursor position.

Task-number: QTBUG-35689

Change-Id: I7e8427d0f5a18abf18ba2faf9d510756ddf6044b
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-03-31 14:01:35 +02:00
Tor Arne Vestbø
e432787ad0 iOS: Share default-FBO for windows between contexts in a share-group
The current implementation of QOpenGLContext sharing assumes that the
contexts form a tree and that leaf-nodes are destroyed before their
parents.

We build on this assumption and keep track of the default FBOs for
windows in the root context of the tree. This allows two shared
contexts to both makeCurrent() on the same window surface without
resulting in two FBOs being set up (which doesn't work on iOS due
to the CEAGLLayer already being tied to another render-buffer).

Change-Id: Ib9f8c597effe488480fe99e10846be22c257f490
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-31 13:48:52 +02:00
Marc Mutz
38b66bdcde QNX: use QStringList::join(QChar) overload
Doesn't construct a temporary QString.

Change-Id: I368c5f997f74c1ce6b2930ac4df292c7a6d5c87c
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-03-31 13:12:38 +02:00
Kai Koehne
b5731ceef1 Update copyright year in tools output
Change-Id: I9ee9604303b3cb29f89a4252df5af35e729f6249
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
2014-03-31 12:46:44 +02:00
Kai Koehne
1bc0df35d1 Updated outdated README for thread examples
Change-Id: I3fa8ac350dc89546793d49a31cc5a152c1f55958
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-03-31 12:46:38 +02:00
Kai Koehne
24ac0efd97 Update copyright year in LICENSE.LGPL
Change-Id: I38c4512751de33d813567bf41b249a7123c9a38a
Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
2014-03-31 12:36:33 +02:00
aavit
624ac989ce Fix compile for embedded Android
It also has a broken declaration of posix_memalign

Change-Id: Ie8f245564f80b04901425729b46953828204efaf
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2014-03-31 12:13:15 +02:00
Samuel Gaist
35a11d6fce OS X QSettings auto test/writing check update
This patch aims to provide an updated test that follows changes started
in 10.7: new rule is that only root can access SystemScope settings. It
also disables the sync() workaround code path which is at least not
executed during the tst_QSettings execution and returns wrong value to
the test.

From Apple's documentation:
"Note that modification of some preferences domains (those not
belonging to the “Current User”) requires root privileges (or Admin
privileges prior to OS X v10.6)—see Authorization Services Programming
Guide for information on how to gain suitable privileges"

https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFPreferencesUtils/Reference/reference.html

[ChangeLog][QtCore][QSettings] QSettings now returns the correct value
for isWritable() when using SystemScope settings.

Task-number: QTBUG-9824
Task-number: QTBUG-21062
Task-number: QTBUG-22745

Change-Id: Ib6a1490ec596b99d189ec4de9a0f28ecfd684172
Reviewed-by: Liang Qi <liang.qi@digia.com>
2014-03-31 12:12:21 +02:00
Maurice Kalinowski
0c7241ccf2 Add documentation for WINRT_MANIFEST
Basically a copy of the inline documentation inside the prf file.

Task-number: QTBUG-37788
Change-Id: Ie6df1597297223be778c748aad525f5521232cb7
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
2014-03-31 12:09:43 +02:00
Andy Shaw
f2111ff1d7 NSScreen screens may be empty so add the main screen in that case
In some circumstances NSScreen screens can be empty yet there is still a
valid main screen so we prevent any problems arising by ensuring we work
with the main screen in that instance.

Task-number: QTBUG-37876
Change-Id: I5827009a9894eb8c1d4f5addc6c6f59e1c50c3d0
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-03-29 21:23:18 +01:00
David Fries
24ac9f518d XCB: use requested primary screen DISPLAY=:0.1 when possible
The current logic requires primary->output to not be specified, or
match the output number.  This fails when the output by that number
doesn't currently have a display attached, as non-connected outputs
are skipped.  This means setting the display to :0.1 for Qt5 will put
the window on :0.0 and it can't be moved to :0.1 after the fact.  The
solution is to pick the first output on the requested screen, then
override if an output exactly matches the primary output value.  That
way it will at least be on the requested screen.

Tested with Xephyr, ATI, and nVidia (proprietary driver), where the
nVidia had the primary output disconnected.

Task-number: QTBUG-15418
Change-Id: I7951dcef74cb135dc12a6e133a71c5852eae9778
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-03-29 21:23:03 +01:00
Shawn Rutledge
51d4eb8f5b If no screens, attempting to create a window results in clean exit
Asserting is only relevant for debug builds, and there were a couple
of other places that a segfault would typically occur before the assert
had a chance.

Change-Id: I1abc82eb3ecfa91050117fab1525f4cbd82ff486
Task-number: QTBUG-37876
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-29 21:22:38 +01:00
luyikei
c5805acccd Remove a duplicate code of else-if statement
I found a useless else-if statement in qwidgettextcontrol.cpp.
It is duplicating.Needless to say,it should be removed.

Change-Id: Ic70b995196f7199e4aa5263a4937c1678b130357
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-03-29 17:31:16 +01:00
Marc Mutz
de10bf4955 QEvent: document and check when registerEventTypes() returns -1
In tst_QEvent, add a check that exhausts the available event type ids and verifies
that registerEventTypes() returns -1 in that case, as documented.

I haven't found a way to test the other case in which -1 is returned.

Since this test operates on a global write-only registry the new test case needs
to keep track of whether the earlier test cases have run successfully. If they
didn't, skip this test case.

Change-Id: I68ea9d17d10dcec22175994aba269dd09c9adf43
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-03-29 12:40:05 +01:00
Marc Mutz
ecdeaa4369 tst_QEvent: add another test-case for registerEventType()
A test for a hint > QEvent::MaxUser was missing.

Added.

Change-Id: I00c1c45f6673f35d4203df15b4ffc35f57273e46
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-03-29 12:36:27 +01:00
Marc Mutz
396e3a18d7 QNX: don't copy a QStringList twice every loop iteration
Apparently, the function before returned const-&, but now returns by-value.

Use the member data variable directly, the function is const anyway.

Change-Id: I324bc675fd7c9b5bfb28c475eba0c0275379132c
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-03-29 12:31:42 +01:00
Konstantin Ritt
e009a3156b Fix build on [older] MinGW
> error: 'REFKNOWNFOLDERID' does not name a type
> error: 'GetKnownFolderPath' does not name a type
> error: 'SHGetKnownFolderPath' was not declared in this scope

REFKNOWNFOLDERID is a typedef for `const KNOWNFOLDERID &` and
KNOWNFOLDERID is a typedef for `GUID`.

Change-Id: I2371f49aba6e20b0bd44aad423dd822e5ee152d4
Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-03-29 10:39:11 +01:00
Allan Sandfeld Jensen
f2e6570e4f Fix drawing paths with constant opacity onto PDF
The native PDF strokes can not be used with constant opacity as any
overlapping parts of the path will end up being drawn multiple times
getting the wrong final opacity. A constant opacity should therefore
be treated the same as opacity on the pen color, and trigger the
fallback drawing.

Task-number: QTBUG-37101
Change-Id: I44f70a8b494567ee89804a5fa6333304a5abe91e
Reviewed-by: Michael Bruning <michael.bruning@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-03-29 10:39:11 +01:00
Richard Moe Gustavsen
8cde2faebc iOS: don't scroll towards cursor during touch press
While the user is touching the screen, postpone scrolling
until we get a touch release. Scrolling in the middle of
a touch sequence will change the coordinates under the
touch, and cause some artefacts.

Change-Id: I02ef420abaab780a459f014d4b4cfb75c8fbb725
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-03-29 10:39:11 +01:00
Richard Moe Gustavsen
46acfa5d2a iOS: stop keyboard from reopending after the gesture finishes
On iOS we have set the style hint 'SetFocusOnTouchRelease'. This is in
conflict with the 'hide keyboard' gesture, since a control can
try to regain focus (and open the keyboard) if the gesture ends
on top of it. So we need some extra work-around code to prevent this
from happening.

The correct way would probably be to cancel the touch sequence once
the gesture triggers, but this is not well implemented in Qt yet,
especially in combination with widgets and mouse synthesis.

Since usage of the gesture behaves really bad in some cases (e.g
if using the TextEdit example) we need to apply this for now.

Change-Id: Ib3327c0bd94d722b4c4793bc6d152d6d19810e4b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-03-29 10:39:11 +01:00
Richard Moe Gustavsen
cd1f44a9fc iOS: animate screen from current in-flight geometry
If you show/hide the keyboard quickly while we scroll the
screen, the scroll will appear to jump. The reason is that
the screen animation will start from where the model layer
is at, and not the presentation layer. So specify that
the animation should start from the current state of the
presentation layer.

Change-Id: I3db87ab11aab583eb50784b0c0a03a9a07c8b822
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-03-29 10:39:11 +01:00
Richard Moe Gustavsen
1f82af17f6 iOS: keep keyboard rect in sync
If you resign/become first responder several times
while the keyboard is animating (e.g changing focus between
focus objects while the keyboard is animating), iOS will
short-cut the whole animation, and jump directly to
keyboard end-state. For that reason, we always need to handle
keyboardRectChanged, and not bail out early. This is
fine, since the guard we had was really only meant for
keyboardWillShow/Hide in the first place.

Change-Id: I3a3d1e7061962286c538360029ed38410dc0f347
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-03-29 10:39:11 +01:00
Israel Lins Albuquerque
075c876f9a [QtSql]QIBASE]add support for prepared queries in numRowsAffected
Prepared queries need to be handled as procedures.

Change-Id: I4b4d7743fe45c416ca83ceb942aa48d79731f2f8
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-03-29 08:46:00 +01:00
Christian Strømme
d432091622 Android: eglBindAPI() won't return on certain devices.
On some devices eglBindAPI() will block forever if called before
eglInitialize().

Task-number: QTBUG-37635

Change-Id: Id27f37e3efcd2ff16e97e1f3381ac3ae8ae0ef33
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-29 02:28:43 +01:00
Frederik Gladhorn
0bd8cc831a Accessibility Mac: CheckBoxes need value attribute
Task-number: QTBUG-37921

Change-Id: I305f983f2fd96b52960060351402ff70a62c3a91
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-03-29 00:40:46 +01:00
Frederik Gladhorn
214a3b093d Accessibility: Set checkable state for checkbox and buttons
Change-Id: I8048c223917a8494a6a4d9016870d3a0762758bf
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-03-29 00:40:46 +01:00
Frederik Gladhorn
c8113ad0a4 Add .dylib and .d to .gitignore
This makes in-source builds on mac somewhat bearable.

Change-Id: I8c9e8e470acf90b03ee25e21dbbdd61ae2656820
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-03-29 00:40:46 +01:00
Frederik Gladhorn
af2f227080 Fix typos
Change-Id: I5388666f68f44b052b8950741a5d43f951ba4931
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-03-29 00:40:46 +01:00
Friedemann Kleint
0fadbc7ed9 tst_qaccessibility: Introduce QTRY_VERIFY to menuTest().
Fixes failures on Windows 8.1.

Task-number: QTBUG-37822
Change-Id: I30460f430e2249555c4e857237e27aa9b03dfa1b
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-03-28 22:52:19 +01:00
Friedemann Kleint
27fa02e29d tst_qgraphicsproxywidget: Fix hang in actionsContextMenu().
Change the test widget to use a non-single-shot timer
to hide the menu once it has become visible.
The test shows hangs on Windows 8.1 CI nodes.

Task-number: QTBUG-37822
Change-Id: I8fc782e53256616119920aef714f89f25863b39f
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-03-28 22:52:19 +01:00
Friedemann Kleint
b980df3f3c Stabilize tst_qtoolbutton for Windows 8.1.
Ensure triggered() and task176137_autoRepeatOfAction()
are using an active main window. Change click timer in
triggered() to repeat until the menu is visible and
add a timer to close the widget and bail out if the
simulated click fails to close the menu.

Task-number: QTBUG-37822
Change-Id: If675660d02335bffd5caa89796914924dad1a909
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-03-28 22:52:19 +01:00
Leonard Lee
685f8fe550 Do not rely on the list of standard font sizes for QFontDialog.
QFontDialog should always show the correct size, even if the size
is not available in the list of standard font sizes. Native font
dialogs across common platforms show the correct size at all times.

Inside init() function, the size list requires proper initialization
since the initial value of size is zero.

Task-number: QTBUG-10317
Change-Id: Idc9e922ac95f797ac98bbf6c885e52828c4c48fd
Reviewed-by: Liang Qi <liang.qi@digia.com>
2014-03-28 22:52:19 +01:00
Lars Knoll
c4d8734c50 Avoid out of bounds memory reads when scaling images
The calculation of the width/height required for the
scaling algorithm was prone to floating point rounding
issues, where the lower value got rounded down, the higher
one rounded up. This could lead to a situation where we
iterated over one more line/pixel in the line than we have
in the source image.

Correct this by passing the dimension of the source image into
the function and bounds checking the values before iterating.

Task-number: QTBUG-35927
Change-Id: If44b2235a479224660d508a0504fec40d724763a
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-28 22:52:19 +01:00
J-P Nurmi
123ae472e2 Fix disappearing transient scrollbars
When a transient scrollbar is already at the end and user attempts to
scroll further, the scrollbar is "flashed" to indicate that the scroll
area is already scrolled to the end. This is done so that the scrollbar
is first painted with a flag turned on to make it appear visible and
then again with the flag turned off to make qstyle start fading it out.

The previous code that relied on paint events to clear the flag was
error prone, and caused the scrollbars to get stuck in an inconsistent
state. This change makes sure that the flag gets cleared regardless of
whether a paint event in each state is received or not.

Task-number: QTBUG-37787
Change-Id: I907697c32cd4d55208a490804a221a5dd6bf7b0b
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-03-28 20:46:53 +01:00
Paul Olav Tvete
3c6c14c0bf Android: implement batch editing for input methods
Task-number: QTBUG-37584
Change-Id: I59f063b2e4b6427a66f7b561cfae7193ceafa43c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-03-28 18:04:22 +01:00
Friedemann Kleint
9b28ab3f38 Pass events to QGestureManager from the main (GUI) thread only.
Task-number: QTBUG-20946

Change-Id: I964452c1e97bd3d3a521e33abeb2f7d8cdbc89a9
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2014-03-28 13:14:42 +01:00
Jędrzej Nowacki
d4a8a29e0b Reduce clang compilation time of tst_qmetatype by ~2%
Change-Id: I64fe12dd0bf9c35ae06fc5a68addc36848cdda3b
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2014-03-28 13:05:56 +01:00
Tor Arne Vestbø
fb3577039c iOS: Add support for offscreen GL surfaces without using hidden windows
There's no need to create a hidden window to get a surface on iOS, as
the platform supports FBOs. Note that defaultFramebufferObject() returns
0 in the case of offscreen surfaces, which is technically not a valid
FBO on iOS due to the indirect rendering, but binding and rendering
to the zero-FBO seems to be no-ops, so clients may safely call eg
glBindFramebuffer(GL_FRAMEBUFFER, ctx->defaultFramebufferObject())
to restore the default FBO after drawing to its own FBO.

Change-Id: I2e67f5d69c0698562052f5ac1df0bbfaa3337148
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-28 13:01:52 +01:00
Friedemann Kleint
c0701f3789 Polish the image gestures example.
- Add a command line parser to properly evaluate help option and
  directory argument, add options to disable gestures.
- Add logging category so that the user can actually see what is
  happening.
- Scale large images.
- Use qreal instead of float.
- Minor polishing: set window title, position file dialog at
  pictures location.

Task-number: QTBUG-37759
Task-number: QTBUG-37203

Change-Id: Ibaf54a13034b150386a8aee476f83a9eba298298
Reviewed-by: Indrajit Tapadar <indrajit.tapadar@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-03-28 12:59:13 +01:00
BogDan Vatra
4cb0e96505 Android: Convert plain text to html text for native dialogs.
Task-number: QTBUG-37824

Change-Id: I380b41d300b198b6cf3060bbecb5b98e0190b69a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-03-28 12:50:04 +01:00
Andrew Knight
0ddf86236e d3dcompiler_qt: Directly link the d3dcompiler DLL on WinRT 8.1
The compiler DLL is a system module starting with Windows 8.1, so
directly link to it instead of expecting a packaged DLL. This makes
shader precompilation completely optional on this platform.

Change-Id: I46cd175ac32e4909a518a059721241b1d6e7be17
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
2014-03-28 07:58:47 +01:00
Andrew Knight
993907d299 ANGLE: Don't export DLLMain functions for static builds
These ifdef guards were originally a part of
"0004-Make-it-possible-to-link-ANGLE-statically-for-single.patch",
but were lost during the last ANGLE upgrade.

Task-number: QTBUG-37842
Change-Id: I4340c1641675dd310c14454a851eb4bc0ae2ec0d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-03-28 07:58:45 +01:00
Sergio Ahumada
d688b7c07c Deprecate QFont::setRawName() and QFont::rawName()
We don't support xlfd fonts anymore and indeed QFont::setRawName()
is an empty method.

[Changelog][QtGui] QFont::setRawName() and QFont::rawName() are
deprecated.

Change-Id: Ic52d42a9bc200ba8b246dd4e28c77f84e086dad5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-03-27 22:02:39 +01:00
Mitch Curtis
3df521dd98 Mark QPoint, QPointF, QRect, QRectF as reentrant.
Task-number: QTBUG-37667
Change-Id: I978a53e075efcfba8898c8e96bce8f19350dd6c4
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-03-27 17:51:21 +01:00
Mitch Curtis
992ed38e4e Fix typos in QFont documentation.
Change-Id: I0e8de5b47ec7b64719f875eecc46cc8ef009642b
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-03-27 17:51:21 +01:00
Tor Arne Vestbø
2654fdb346 iOS: Check FBO status and return failure from QIOSContext::makeCurrent()
The Khronos documentation for glCheckFramebufferStatus recommends calling
the function to see if the framebuffer is complete prior to rendering.

We now give more info to clients that call makeCurrent(), by storing the
state of the default FBO and returning that, instead of always returning
true and leaving the clients vulnerable to calling OpenGL functions on a
non-complete FBO.

Change-Id: Ia99c21f811ac799b350f07e73b2ae4b173d71120
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-27 17:51:21 +01:00
Tor Arne Vestbø
98e90f700a Keep track of destroyed QOpenGLContexts in QOpenGLVertexArrayObject
QOpenGLVertexArrayObject saved the QOpenGLContext it was created in at
the point of QOpenGLVertexArrayObjectPrivate::create(), but didn't set
the saved context back to 0 in QOpenGLVertexArrayObjectPrivate::destroy().

The result was that the zero-pointer checks in the VAO destructor never
hit, and we ended up trying to make a destroyed QOpenGLContext current.

This bug was triggered by the QFontEngine having a limit of 4 concurrent
glyph caches, so when we created the fifth glyph cache we would remove
an earlier one, which destroyed its VOA, that referenced a QOpenGLContext
for a window that had been destroyed already.

We now reset the context back to 0, and disconnect aboutToBeDestroyed()
at the point of QOpenGLVertexArrayObjectPrivate::destroy().

Change-Id: Ib16f3877b310144886cf863b16697c137e7c7941
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-03-27 17:51:21 +01:00
Liang Jian
666c25c089 Fix race condition in QOpenGLMultiGroupSharedResource
In QOpenGLMultiGroupSharedResource::value(), the m_resources memeber of
opengl context group will be checked and may be inserted a new value. This
function may be called from different threads with the same opengl context
group object: Think about that OpenGL context A and B are shared, they
live in different thread, and in each thread we call
QOpenGLContext::functions() to the context, that may cause the race I
mentioned above. So I put a QMutexLocker to prevent race condition.

Change-Id: I101a28f46b2af72b3094a9945880efeb3563482a
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-27 17:51:21 +01:00
Erik Verbruggen
dd453adbe7 Mac: make FSEvents-based QFileSystemWatcherEngine more robust.
- Record the last event ID with every callback. This event ID is passed
to FSEventStreamCreate when restarting the stream, so the watcher will
receive all events that occurred since invalidating the previous stream.

- Never start with kFSEventStreamEventIdSinceNow, because this will
generate a (bogus) soft-assert in FSEventStreamFlushSync in CarbonCore
when no event occurred since stream creation. The last globally
generated event ID is used instead to simulate the "now".

- Do not dispose and recreate the stream in the callback, but use a
queued signal-slot connection to schedule this on thread that owns the
watcher.

Change-Id: I02f5a845d9e27f9853ed97925ab9c7a5bc0dede1
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-03-27 17:51:21 +01:00