| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
The popup coordinates were being stored in an
unused variable and x,y offsets were left unmodified
Change-Id: Idbae7127b65963be6ddbe165d98ac7daa92cac9f
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
|
|
|
|
|
|
|
|
| |
setAcceptHoverEvents was set to true but the methods
to handle it werern't implemented
Change-Id: I53719b00eac27b3b903a882fd2aa91fd6a51973e
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|
|
|
|
| |
Change-Id: I8d44f50480440060eba84354e88fb2535e1d8e4a
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
|
|
|
|
|
|
|
| |
The window is already destroyed and server doesn't get a message yet.
Change-Id: Ia9dd0ce891a712d1aa913fcb3313a5fe300788ab
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
|
|
|
|
|
|
|
|
| |
If the context does not support the NPOTTextureRepeat (i.e. GL_OES_texture_npot extension), wrapping must be set to CLAMP_TO_EDGE to prevent invalid texture mapping.
Change-Id: I3ededccc14a32188986529c14fa91161fb383cfc
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|
|
|
|
|
|
|
|
|
| |
It must redraw, even if it doesn't actually redraw anything, irrespective
of the fact that a attach/damage has come or not. Just calling frame();commit()
is perfectly valid.
Change-Id: If298654b8a7cb7c954cfbad8618f23134731cb9f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
|
|
|
|
|
|
|
| |
We want to make sure the events reach the clients asap.
Change-Id: I0783c6be4f4412fd5f3665faec1e57d141291ce7
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Also change naming scheme of plugins:
buffer integrations doesn't start with "wayland-" but the platform
plugins have to start with "wayland-".
Also update the README
Change-Id: I6dd2103ab287ed569ab06cfb6eb469e3db058831
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|
|
|
|
| |
Change-Id: I2de94481f7d3e109fdce7ca961f8969299cf5d9e
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When there is a rendering thread, like with QtQuick compositors,
there is a race condition where the frame callbacks are sent before
the last buffer the client sent is released.
Assume the following scenario:
attach(B1)/frame(F1)/commit()...frame started...attach(B2)/frame(F2)/
commit()...frame finished.
On frame finished the callback just installed is emitted before the
buffer B2 is being used and B1 released. That forces the client to
allocate a third buffer to draw the next frame.
Now, do not send out the frame callbacks until a new frame started.
The successive draw will release B1, use the new B2 and than send out F2.
Change-Id: I5743c7baf9fdd3cde28c5f594ff646c06abb74b7
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
|
|
|
|
|
|
|
|
|
| |
A client calling attach(A);commit();attach(B);commit() should result
in its back buffer be set to B, and A be discarded.
If the client wants to have a queue it should keep it client side or
a protocol extension tailored for that purpose should be developed.
Change-Id: Ia0048f311504d85821df9f5b9225887801efec71
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
|
|
|
|
|
|
| |
Remove the removed argument from the EGL platform context constructor.
Change-Id: I6203d07c356f7191a698d8d5bc958923cbdc2d96
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
|
|
|
|
|
|
|
|
| |
This adds new API, but does not add a way for the user to set the
keymap. That should be implemented in the compositors.
Change-Id: I28ee7d372f8f578c0d7efb9223cabce49504be1f
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
|
|
|
|
|
|
|
|
|
| |
The egl config should be calculated when creating the window, and
the format of it should be set accordingly. The format of the window
and the one of the context will then match if using the same format
as input.
Change-Id: Ie93735171d8945111a450263089e192919249b68
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|
|
|
|
|
|
|
|
| |
As discussed, Wayland 1.3 is not common in distributions yet, and
that is a problem for the C.I. machines.
Change-Id: Iec5c6d8ae1d1a50199f66d45ca9269694db78efe
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
src/compositor/wayland_wrapper/qwlsurface.cpp
Change-Id: I3b6a4af41f272d3dc7fc920ba2542f2dd7978175
|
| |
| |
| |
| |
| | |
Change-Id: Ifb6e2456c781e80f84e27e68c3e279ea993f9307
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
|
| |
| |
| |
| |
| | |
Change-Id: I84dc6581b93c213c88762dc3477b8f932d08519b
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
|
| |
| |
| |
| |
| | |
Change-Id: I59a09b8725f7ba86bf273d5cce6fcc1f5c153840
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| |
| |
| |
| |
| | |
Change-Id: I107f74dbabb5d8192d44f3f76dc38852928847b9
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
KDE would like to get its integration plugin on Wayland.
The name won't change for Wayland, so filtering it out
because it is the name of the X11 desktop environment is
wrong.
The patch follows the approach of the QGenericUnixTheme.
Change-Id: Ia9c253ae6b5d609bd3bc630ce5c36b89811b079a
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/client/hardwareintegration/qwaylandclientbufferintegrationplugin_p.h
src/client/hardwareintegration/qwaylandserverbufferintegrationplugin_p.h
src/compositor/hardware_integration/qwaylandclientbufferintegrationplugin.h
src/compositor/hardware_integration/qwaylandserverbufferintegrationplugin.h
src/plugins/hardwareintegration/client/brcm-egl/main.cpp
src/plugins/hardwareintegration/client/drm-egl-server/main.cpp
src/plugins/hardwareintegration/client/wayland-egl/main.cpp
src/plugins/hardwareintegration/client/xcomposite-egl/main.cpp
src/plugins/hardwareintegration/client/xcomposite-glx/main.cpp
src/plugins/hardwareintegration/compositor/brcm-egl/main.cpp
src/plugins/hardwareintegration/compositor/drm-egl-server/main.cpp
src/plugins/hardwareintegration/compositor/wayland-egl/main.cpp
src/plugins/hardwareintegration/compositor/xcomposite-egl/main.cpp
src/plugins/hardwareintegration/compositor/xcomposite-glx/main.cpp
Change-Id: I9a9b418075970dd334babc3590b9b0315c2afb0d
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I771e0478e274ef7cfabb417c9712d4dbb4d62f5b
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I60faee3fb4b9a74a13c8489a5dd1df7a2a5a4ae4
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Id1c9d14061d513f6c37a59ed8161732366ab3526
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ia4ab692fde0dee9224c9c0e3204cfee56144b50f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
.qmake.conf
src/compositor/hardware_integration/qwaylandclientbufferintegrationplugin.h
src/plugins/hardwareintegration/compositor/brcm-egl/main.cpp
src/plugins/hardwareintegration/compositor/wayland-egl/main.cpp
src/plugins/hardwareintegration/compositor/xcomposite-egl/main.cpp
src/plugins/hardwareintegration/compositor/xcomposite-glx/main.cpp
src/plugins/platforms/qwayland-brcm-egl/main.cpp
src/plugins/platforms/qwayland-egl/main.cpp
src/plugins/platforms/qwayland-generic/main.cpp
src/plugins/platforms/qwayland-xcomposite-egl/main.cpp
src/plugins/platforms/qwayland-xcomposite-glx/main.cpp
Change-Id: I957c9bee893a9e19fc8c93f0e51292007fb3a4a8
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Follow Qt version in the dev branch which is now 5.3.
Change-Id: Ib10a39cf8cc43dbbc7113d2ca06a9404d7b23a1e
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: Ie650bf0b4c243080d8f6173b9e299eb70afc8f90
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
attach() needs to be called from swapBuffers(), not just once from createSurface().
Change-Id: I8545c1a16179d9e78ae45c0532c89a6298820aa4
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The surface format was not set properly in the client side
integration, leading to mysterious errors e.g. in shader compilation.
Change-Id: Id5913def1d82970680d71832ac5fadf87e0956c2
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: Ide081251b32ade32d552fc949e10a518ff0fa89a
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Jan Arne Petersen <jan.petersen@kdab.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Interface names for some protocols might not start with wl_ or qt_,
with this change users can specify a prefix of their liking.
Change-Id: I70d40985165c49114b525bdec2a872aa5b0dad6d
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: Idd12c0db73203daa008d93c0dc8053e25dff09e2
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
| |_|/
|/| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Improve the way wl_surface's frame callbacks are handled. The sooner
they are sent the better is for the clients, as they have more time to
render the next frame, but reducing the time for the compositor to
render its frame. The best compromise is probably to send them out
after the compositor has issued its GL calls but before calling
eglSwapBuffers(), and before the GPU actually draws anything.
Rename the function to send the callbacks to only reflect its purpose,
leaving the compositors free to choose when they want to send them.
Change-Id: Ifcdfcad9e54b4d07d5c087898123ac724395a194
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Reduce the chances of seeing a bad frame.
Change-Id: Idac3450d92210fc5fc33cb68862b089964c9a8ce
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since QWaylandInputDevice::seat_capabilities checks the pointer before
creating this object, it must be initially null so that the device
will be registered.
Change-Id: Ia15b407b1636eab41c04f30bb631306095e5aefb
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Profiling shows Qt Creator spends 2% of its load time normalizing
Change-Id: I48937197efac2ea93571f616ed4e94551540bd5d
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Mesa 10.0 replaces struct wl_buffer with struct wl_resource in the
eglQueryWaylandBufferWL signature. The structures are binary compatible
(struct wl_buffer is a superset of struct wl_resource), but C++
complains about the type mismatch:
error: cannot convert ‘wl_buffer*’ to ‘wl_resource*’ in argument passing
We are already using struct wl_resource on our side, so removing the now
redundant reinterpret_cast would fix it. But then we could not compile
with Mesa versions older than 10.0 any more, and those are still common
in mainstream distributions today.
A compile-time switch for different Mesa versions is possible, but
unnecessarily clumsy. Instead, re-declare the new signature and use that
independently of the Mesa version. The duplicate declaration can be
removed when backwards compatibility is no longer needed.
Change-Id: I3d0e326f5a0eb88d125b8c9fd23147682e23b94b
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Though it is wrongful behavior on the clients part, a client should
not be allowed to crash the compositor simply by posting it an extra
buffer.
Change-Id: Ia8ba0bbfc63273b0af13b81fbb9a74328289face
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If the QWaylandSurfaceNode had m_damage during preprocess()
(which it could get if the GUI thread got a surfaceDamaged)
it would call into the item, update its texture and clear its
m_damaged state. This resulted in that the next time we
advanced the buffer queue, the item would not have m_damaged
set and as a result, the texture would not be updated.
Also, the call from preprocess() to updateTexture, though protected by
a mutex in preprocess(), touched a number of variables on the GUI
thread which were not being protected there, such as m_damaged and
smooth().
The QWaylandSurfaceNode was doing this primarily to deal with direct
rendering which has been removed pending a better solution, so we
replace its use with the built-in QSGSimpleTextureNode.
Change-Id: Ifccb6b1149980b4796a182fa8525446a00bbe57f
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Mapping a surface should not override a "paintEnabled: false"
in the QML.
Change-Id: Ib28499c24f34fead80e9f9ad0bbe9d72da5e1e9e
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Some EGL implementations resize the EGL buffers after eglSwapBuffers,
so we need to send the geometry change event after the swap, or else
the Qt window size and the physical buffer size will be different to
each other. Do not force this behavior though, but use it only when
the QT_WAYLAND_RESIZE_AFTER_SWAP environment variable is set.
Change-Id: I79e39442b3010c563a81d7c94e747a982e158fc1
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: I770b79eb21fbc4ac7826cec5c47286dab6c74da5
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The surface now has a distinct back and front buffer. Front means it
is on the screen and being used as a texture. Back means it should be
put to screen in the next updatePaintNode().
For the purpose of QML and GUI-thread properties, the 'back' buffer is
what contains the correct properties as it is what it will eventually
be rendered with. For the purpose of rendering, the front buffer
contains the right texture. If no back buffer is present, then there
was no changes and front buffer applies to both.
The Surface's buffer queue has been updated to only fire damage and
advance once we swap back buffer to front buffer which happens during
updatePaintNode(). The fact that the buffer advancing happens during
sync also means that we are releasing buffers back to the client as
soon as another buffer is ready to be displayed in the compositor.
This is "half a frame" earlier than the current implementation (which
releases after the next swap). We consider this safe because:
- The compositor has a new buffer to display and does not need the
old one.
- If the GPU is not done rasterizing the scanout buffer for the
previous frame, it should hold a read-lock on the buffer so
preventing the client from starting a render to it. If this
assumption fails on any hardware we can make the time of
buffer-advance optional. Either during "sync" or during "after
rendering" as it is today, but "after rendering" will not offer any
guarantee, just more time, resulting in a higher chance of the
buffers being ready. Aka, without an internal read-lock and no
fence mechanism, there is no guarantee.
Texture cleanup is now explicit as we have a well defined location to
clean up textures, during updatePaintNode(). This avoids cleanup
issues which previously existed as buffer cleanup was happening on the
GUI thread. Surface and Buffer destruction coming over wayland is
queued up in compositor and handled before the next "sync", when it is
safe to do so.
The change also removes doUpdate, postBuffer and frameSwappedInternal
as these are no longer used. Direct rendering will need to be
considered in a new light with the new buffering scheme, and anyway
needs work.
Change-Id: I2db0385b4b8859f96caba374f3530448178e1473
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Iac1b8b070d3bf87b29d0be9a2a76fd56e7046f0f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I5c734561c0c13192acd9ffd590eb2e8eeb3ca4e1
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Did not match the key used in the plugin metadata.
Change-Id: I58cf08c684b33d8d7166a074dbafb4187b010498
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I8d2a74cdc305fb086f3b5c63d0abe4c46c40bbde
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I092eaebad40785a68c0c9c22201c9e2d39666ea9
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|