| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We're currently adding a lot of transparent pixels to the cache,
wasting both memory and cpu cycles while drawing. AlphaMapBoundingBox
was introduced to return the exact same bounds as the alphaMapForGlyph
function so we should only rely on this instead of adding arbitrary
padding and margins all over the place.
Windows still has an arbitrary +4 in the its drawGDIGlyph() which
means batching will not work on windows, but at least now
other platforms do not need to suffer.
Change-Id: I714903fa195004400c09c3bf6570e46179775f09
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
There was a error: narrowing conversion of 'Myns::XEMBED_VERSION'
from 'unsigned int' to 'long int' inside { } [-Werror=narrowing]
Change-Id: I1e155870b0b632bfe5ffa9deac69c4f151f5aa23
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
KWin supports the XSync extension. Since the check got added the XSync
implementation in KWin got reworked (release KDE SC 4.8).
Change-Id: I15c37fe4dd5501ca107b90a07ae8d70295ffaeda
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In the case of a window that is not yet shown, or destroyed, there
will not be a native handle, and this would crash.
Change-Id: Ib8c1a4490d82654d04073dac240eaa1275cbc1b0
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
GCC complains about this class having virtuals and no virtual destructor.
C:/Qt/qt5/qtbase/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp:750:20: warning: deleting object of polymorphic class type 'QWindowsNativeFileDialogEventHandler' which has non-virtual destructor might cause undefined behaviour [-Wdelete-non-virtual-dtor]
Change-Id: I7494fce4bb71ed65954226259fa65fdc507ca403
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
|
|\ \ \
| | | |
| | | |
| | | | |
refs/staging/dev
|
| |\| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
examples/widgets/doc/src/addressbook-fr.qdoc
Change-Id: Id1196e8e0c6445f1616c3f29234c974d809f8e48
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
If m_window is invalid, devicePixelRatio returns 0, which leads to
adverse effects in other parts of the code. For example,
qquickshadereffectsource.cpp will get stuck in an infinite loop
trying to multiply 0 by 2.
Task-number: QTBUG-32975
Change-Id: Ie3db86f1f459df018ebce67bcb4226f6cffe854e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Prevent windows from being recreated due to screen changes which
can cause GL widgets to stop updating among other things.
EnumMonitors returns only one temporary monitor named "WinDisc"
when locked. Do not remove monitors when that happens.
Task-number: QTBUG-33062
Change-Id: Ia2247bb04b3e10f99f594245f84238b5f9044f70
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The XCB backend runs a thread which gets events out of the XCB event
queue and feeds it to the main thread via another queue. This queue is
protected by a mutex.
However, when the event thread exits, it cleans up after itself and
frees all remaining entries in the queue. This code messed with the
event queue without acquiring the needed mutex and left behind a list
full of stale pointers.
Fix this and protect the freeing with the correct mutex and clear the event
queue afterwards.
Change-Id: Ie49cf6241b76be86d8cebbc931f7226a3f6a14e5
Signed-off-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
On BB10, NAVIGATOR_WINDOW_INACTIVE is called before
NAVIGATOR_WINDOW_INVISIBLE, already triggering handleWindowGroupDeactivated()
Change-Id: I7d82c0220fe8dc8e87bfa2b31af6085c7d1d6cee
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
On Playbook, rendering should happen when the application is thumbnailed,
therefore we need to send a window activated event to resume rendering once
the thumbnail is restored from the minimized state.
Change-Id: I0fa5da483dc101e25f718e52859a66edfe5c66c7
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We retain each modal NSWindow as long as its modal session is running,
and we should release it every time that modal session ends.
Task-number: QTBUG-32728
Change-Id: Ia30c9c2d15be1350e7150a0d3c2f530a2fe4f38b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Task-number: QTBUG-31864
Change-Id: Ife2429b2d6b845e5ccca31a03e66351a3ff5ba4b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Task-number: QTBUG-33079
Change-Id: Iec2ddfe07b07b3a921098c7147f26aff316bf6e6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Layered (translucent/non-opaque) windows do not receive WM_PAINT,
expose events need to be generated. Improve
6800728d091e5122e6d93675db84ee028221d161 to handle transient
children as well.
Task-number: QTBUG-17548
Change-Id: Id113604512692dfbea1f2b10d0db3068213cf599
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Task-number: QTBUG-32681
Change-Id: Iec7204985867a8d65cea393ba6ab66d328a5e7b2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When suspending the app we would destroy the surface twice,
causing libEGL to output a warning on the second attempt.
We would also destroy the surface before all references were
released which is not 100% nice. We don't need to call the
super class implementation at all, since we are managing
the EGL surface ourselves.
Change-Id: Ie1ab2ea8561d0018b5f16ac8cdf3296313a0a92c
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It is not guaranteed that buffers are cleared when they
are allocated. So don't use a buffer for the root window,
and clear buffers for the actual content.
Change-Id: I42939baec03fa05968c83bbf2739ab8d1d70c8be
Reviewed-by: Matt Hoosier <matt.hoosier@garmin.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
"Make QGuiApplication::exec() run within NSApplicationMain()"
"Make Qt process native and timer events on Cocoa applications"
"Cocoa: Fix QFontDialog, QColorDialog auto-tests"
This reverts commits
1e14762b8d79118540bd09a84dd3e48f4f5e113e
e4b2a0b4bab2a17a65fedafe9bae50af1fe019f6
df7944e7d7dd8b2bbccbd639eff0ab09745d6cc3
Change-Id: I80b65b5ee0297b090f807bd420664233dfc44f7b
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The new Cocoa event dispatcher made apparent some deficiencies in the
way the dialog helpers were being hidden. In particular, we would not stop
a dialog helper's modal loop when closing the dialog, resulting in the
auto-tests hanging. Also, since the QApplication event loop is runnig with
[NSApp run] in the stack, the previous workarounds are no longer needed.
Task-number: QTBUG-24321
Change-Id: Ifba713c286638d78a699c319a15683d09714f06f
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since we don't spin any QEventLoop, we need to make sure events posted
by the window system interface are processed.
Change-Id: I0e7b541d86a7a14f2ecd3702e7cbdbdee9920859
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We follow the same pattern as for iOS and Windows ports, making
sure the user's main() runs in a platform friendly environment. In
this particular case, it means calling the user's main() during the
call of NSApplicationMain(), and calling the user's main() function
(renamed to qMain() as in Windows) after receiving
NSApplicationDidFinishLaunchingNotification. In practice, this means
that NSApp is running when qMain() is called, and therefore when
QCoreApplication::exec() is called.
For those command-line utilities running on QGuiApplication, or any
deriving class, and that do not provide a bundle, we override the main
bundle's dictionary and get NSApplicationMain() to run as usual.
Added cocoa/cocoamain "subdir" to build libqtcocoamain.a (together with
cocoa/cocoaplugin -- plugins/platforms/cocoa is made a subdirs project).
This library is linked against all GUI Qt apps and provides the actual
main() function. It also catches the launching NSApplication notifications,
and calls the user's qMain() function. Note that this will happen in the
same cases when the user's application will run with the Cocoa QPA plugin.
Launch related code in QCocoaApplicationDelegate is moved to libqtcocoamain,
QNSApplication is removed (but sendEvent: redirection still there), and
code in QCocoaEventDispatcher dealing with calling [NSApp run] and related
has been removed since it's become unreachable.
ChangeLog: [Qt for Mac] Make QGuiApplication::exec() run within NSApplicationMain()
Change-Id: I790e5138c29aac2e0215a9147d0148fece40ca22
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The application state is tied to the QtActivity lifecycle.
Mapping of states between Android and Qt is as follows:
onResume --> ApplicationActive
onPause --> ApplicationInactive
onStop --> ApplicationSuspended
Change-Id: Iefef08d6c7a7fde28fba1f4886882458cda6a0c0
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Starting with Windows Vista, we can control the compositing window
manager using the DWM APIs. This allows us to make truly transparent
OpenGL windows.
We also have to detect and listen if compositing is enabled, otherwise
enabling transparency will cause glitches all over the place.
This (partially) fixes
Task-number: QTBUG-28214
Change-Id: I0fe1ec7adec8181b788c32de03c59142731d9e7f
Done-with: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Now that it lives in QPlatformSupport, will be fleshed out more, and
might be used on OSX at some point in time. Still iOS specific, as
none of the iOS API usages have been ifdef'ed.
Change-Id: Ib7fde6403ef2dfef175a6f306a85d58027569a30
Reviewed-by: Ian Dean <ian@mediator-software.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We resize the render-buffer based on the CALayer of the UIView that's
backing the QPlatformWindow, so the logic in defaultFramebufferObject()
to determine if a resize is needed should be based on the relationship
between the render buffer-and the CALayer, not the render-buffer and
the QPlatformWindow.
There is still an issue of the QPlatformWindow and its UIView/CALayer
not being in sync, but that's a separate issue.
Change-Id: I84f617d07ec64fea0d027473e9720523eeae0c7a
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since QPlatformTheme covers all dialogs whereas QPlatformDialogHelper is
really only for the native dialogs then the SnapToDefaultButton hint is
moved as it has relevance for all dialogs
Task-number: QTBUG-32631
Change-Id: I1dce0bb4abcd4cfd39c4a199a33fc7078176ab4b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This enables both modes for TalkBack,
explore-by-touch and the normal swiping mode.
It is partially inspired by the BarGraphView example
of the Google/Android Eyes-Free project.
Note that for any accessibility to work you'll need
a device with api level 16 at least.
Using reflection we should be able to dynamically pick up
the classes if we have the high enough api level.
Change-Id: I11b93bead451483782a1711434d45c8f9a35996f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The API is broken and available in individual functions.
Don't make it more complicated than necessary to implement
the interfaces for new widgets.
Change-Id: Ie408c369ef05b2b8e7ac666b25153d090fcf3aae
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since we await giving focus to a focus object until a press
release, it also makes sense to await activating a window until
a press release, since they both have to do with focus. By doing
so, the input panel now stays open if the user selects a line edit
in one window when a line edit in another window still has focus. We
also avoid activating a window in case of a touch cancel (e.g as
a result of the user flicking or triggering a gesture).
Change-Id: Ic00c4be69c257fceb10ce2d5a81cb490ea93710f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
|
|\ \ \
| | | |
| | | |
| | | | |
refs/staging/dev
|
| |\| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
qmake/doc/src/qmake-manual.qdoc
src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
src/src.pro
Change-Id: I0a560826c420e46988da3776bd8f9160c365459a
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Suppress resize cursor for fixed size windows.
Task-number: QTBUG-32663
Change-Id: I9579bb13d494fe21e5db7b75d01a3cf1b693c7f6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
XI2 sends events for individual touch points, but QTouchEvent
sends all of them with a stationary state if they didn't change.
If a touch pressed event is received, and the next XI2 event
is about a different touch point, we wouldn't update the state
of the previously pressed touch point.
Change-Id: I1ebcbea1cea54872064ef7710e2aac7b0b41cd70
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
| | |\|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
Change-Id: I1a92b0c0dc1f7bad947a54fdd3ea7cfd6a5a7694
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This doesn't actually fix the source of the problem, but its harmless.
This was reproduced with tst_qcolumnview and voiceover enabled
Task-number: QTBUG-32440
Change-Id: Iad27884e1ca9194f911271c16908ef358e4b1875
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
To avoid using modifier keys when releasing a two-finger
mouse wheel flick on a trackpad, we listen to event
phases. But for a normal mouse, a separate phase
NSEventPhaseNone is given. Ensure that we still send
modifier keys when that state is reported.
Task-number: QTBUG-32098
Change-Id: Ib840dd661b7842ae49127e5a8d42e3666ae2da4e
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
A QWindow should keep its title after removing and restoring the
frame, so set it if we are setting window flags that include a frame.
Task-number: QTBUG-32978
Change-Id: I0fe1b651eac05a210b06ec4f7f6fb78f2536834d
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Task-number: QTBUG-21500
Change-Id: Ifed85ddcdecd30453207728b0f376baa2abf6e66
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Introduced by the tray icon refactoring
d8090022f66cc6cff6af5ed2ae702212fd172ff7 among other things.
Task-number: QTBUG-33068
Change-Id: I7c536c68acc2fae39ca30afb401500d0dc8701b1
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ic2d59ac9194d6756c9f978fb1c13baf3fa7009b7
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
After change 4dbf574b7acb7ae8f852219700afa95f8d568f0e touch worked
only if XI2_DEBUG is turned on. That is because it creates the
QTouchDevice and calls QWindowSystemInterface::registerTouchDevice,
which must be done at startup so we can receive events.
Change-Id: I9446d72bc702fbd819bf26bcdc2a3d657180f642
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
|
|\ \ \
| | | |
| | | |
| | | | |
refs/staging/dev
|
| |\| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
configure
mkspecs/macx-xcode/Info.plist.app
mkspecs/macx-xcode/Info.plist.lib
qmake/doc/qmake.qdocconf
src/corelib/global/qglobal.h
tests/auto/other/exceptionsafety/exceptionsafety.pro
tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
Change-Id: I3c769a4a82dc2e99a12c69123fbf17613fd2ac2a
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Task-number: QTBUG-32899
Change-Id: I423ac2d636306303d39e973f19032c9004957095
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
On Linux (XCB), resizing a dialog shifts its position. The fix corrigates
the geometry of the dialog to the right values.
Task-number: QTBUG-32473
Change-Id: I6d38539a3ebc3b95eacc7f13a76f83fc9e4d821c
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Windows Server 2003 is based on Windows XP and should use
QWindowsXpFileDialogHelper as it does not support the CLSID-based
IFileDialog interfaces that are available from Windows Vista onwards.
Change-Id: Idd973f9ec4c98d1f2fb7e835de64532edeccfc72
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
|
| | |\ \ |
|
| | | |\|
| | | | |
| | | | |
| | | | | |
Change-Id: I5e94c4f01564df633c9925561ebb0b553bd31a2e
|