|
Krita Source Code Documentation
|
#include <KisWaylandSurfaceColorManager.h>
Inheritance diagram for KisWaylandSurfaceColorManager:Public Types | |
| enum class | WaylandSurfaceState { Disconnected = 0 , Connected , WaylandWindowCreated , WaylandSurfaceCreated , APIFeedbackCreated , PreferredDescriptionReceived } |
Static Public Member Functions | |
| static std::shared_ptr< KisWaylandAPIColorManager > | getOrCreateGlobalWaylandManager () |
Private Slots | |
| void | slotPlatformWindowCreated () |
| void | slotPlatformWindowDestroyed () |
| void | slotPreferredChanged () |
| void | slotWaylandSurfaceCreated () |
| void | slotWaylandSurfaceDestroyed () |
Private Member Functions | |
| void | reinitialize () |
| void | setReadyImpl (bool value) |
| WaylandSurfaceState | tryDeinitialize (std::optional< KisWaylandSurfaceColorManager::WaylandSurfaceState > targetState) |
| WaylandSurfaceState | tryInitilize () |
Private Attributes | |
| std::optional< KisSurfaceColorimetry::SurfaceDescription > | m_currentDescription |
| WaylandSurfaceState | m_currentState {WaylandSurfaceState::Disconnected} |
| bool | m_isReady {false} |
| QPointer< QObject > | m_platformWindowStateDetector |
| std::optional< KisSurfaceColorimetry::SurfaceDescription > | m_preferredDescription |
| std::optional< KisSurfaceColorimetry::RenderIntent > | m_renderingIntent |
| std::unique_ptr< KisWaylandAPISurface > | m_surface |
| QMetaObject::Connection | m_surfaceCreatedConnection |
| QMetaObject::Connection | m_surfaceDestroyedConnection |
| std::shared_ptr< KisWaylandAPIColorManager > | m_waylandManager |
Additional Inherited Members | |
Signals inherited from KisSurfaceColorManagerInterface | |
| void | sigPreferredSurfaceDescriptionChanged (const KisSurfaceColorimetry::SurfaceDescription &desc) |
| void | sigReadyChanged (bool value) |
Protected Attributes inherited from KisSurfaceColorManagerInterface | |
| QWindow * | m_window |
Definition at line 16 of file KisWaylandSurfaceColorManager.h.
|
strong |
| Enumerator | |
|---|---|
| Disconnected | |
| Connected | |
| WaylandWindowCreated | |
| WaylandSurfaceCreated | |
| APIFeedbackCreated | |
| PreferredDescriptionReceived | |
Definition at line 34 of file KisWaylandSurfaceColorManager.h.
| KisWaylandSurfaceColorManager::KisWaylandSurfaceColorManager | ( | QWindow * | window, |
| QObject * | parent = nullptr ) |
If we have reused an existing wayland manager, then it will be ready
Definition at line 57 of file KisWaylandSurfaceColorManager.cpp.
References getOrCreateGlobalWaylandManager(), m_waylandManager, reinitialize(), and KisWaylandAPIColorManager::sigReadyChanged().
|
override |
Definition at line 72 of file KisWaylandSurfaceColorManager.cpp.
|
static |
A weak pointer in s_waylandManager may have become released, so it may be null, even though the static itself is non-null.
Definition at line 37 of file KisWaylandSurfaceColorManager.cpp.
|
overridevirtual |
Implements KisSurfaceColorManagerInterface.
Definition at line 138 of file KisWaylandSurfaceColorManager.cpp.
References m_isReady.
|
overridevirtual |
It can return std::nullopt only when the interface is not ready
Implements KisSurfaceColorManagerInterface.
Definition at line 321 of file KisWaylandSurfaceColorManager.cpp.
References m_preferredDescription.
|
private |
Definition at line 118 of file KisWaylandSurfaceColorManager.cpp.
References Connected, Disconnected, KIS_SAFE_ASSERT_RECOVER_NOOP, KIS_SAFE_ASSERT_RECOVER_RETURN, m_currentState, m_waylandManager, ppVar, PreferredDescriptionReceived, setReadyImpl(), tryDeinitialize(), and tryInitilize().
|
overridevirtual |
It can return std::nullopt if the surface description is unset or if the connection to the compositor has been lost.
Implements KisSurfaceColorManagerInterface.
Definition at line 316 of file KisWaylandSurfaceColorManager.cpp.
References m_renderingIntent.
|
private |
Definition at line 76 of file KisWaylandSurfaceColorManager.cpp.
References m_isReady, KisSurfaceColorManagerInterface::sigReadyChanged(), and value().
|
overridevirtual |
Sets the surface description of the linked QWindow
The operation may be asynchronous on some platforms, so you should handle a QFuture<bool> object to get the actual result.
WARNING: Please do NOT call future.waitForFinished() from the GUI thread. On some platforms (e.g. wayland) a signal from the even loop should be processed to actually set the surface description, so you'll get a deadlock if you try to wait for it in the event loop's thread.
Implements KisSurfaceColorManagerInterface.
Definition at line 233 of file KisWaylandSurfaceColorManager.cpp.
References KisWaylandAPIImageDescriptionCreatorParams::createImageDescription(), m_currentDescription, m_isReady, m_renderingIntent, m_surface, m_waylandManager, KisSurfaceColorManagerInterface::m_window, KisWaylandAPIImageDescriptionNoInfo::sigDescriptionConstructed(), and supportsSurfaceDescription().
|
privateslot |
Definition at line 342 of file KisWaylandSurfaceColorManager.cpp.
References Connected, KIS_SAFE_ASSERT_RECOVER_RETURN, m_currentState, ppVar, setReadyImpl(), tryDeinitialize(), tryInitilize(), and WaylandWindowCreated.
|
privateslot |
Definition at line 361 of file KisWaylandSurfaceColorManager.cpp.
References Connected, KIS_SAFE_ASSERT_RECOVER_NOOP, m_currentState, setReadyImpl(), and tryDeinitialize().
|
privateslot |
Definition at line 326 of file KisWaylandSurfaceColorManager.cpp.
References APIFeedbackCreated, KIS_SAFE_ASSERT_RECOVER_RETURN, m_currentState, m_preferredDescription, PreferredDescriptionReceived, setReadyImpl(), KisSurfaceColorManagerInterface::sigPreferredSurfaceDescriptionChanged(), and tryInitilize().
|
privateslot |
Definition at line 369 of file KisWaylandSurfaceColorManager.cpp.
References KIS_SAFE_ASSERT_RECOVER_RETURN, m_currentState, ppVar, setReadyImpl(), tryDeinitialize(), tryInitilize(), WaylandSurfaceCreated, and WaylandWindowCreated.
|
privateslot |
Definition at line 387 of file KisWaylandSurfaceColorManager.cpp.
References KIS_SAFE_ASSERT_RECOVER_NOOP, m_currentState, setReadyImpl(), tryDeinitialize(), and WaylandWindowCreated.
|
overridevirtual |
Test if the rendering intent is supported by the compositor
Implements KisSurfaceColorManagerInterface.
Definition at line 221 of file KisWaylandSurfaceColorManager.cpp.
References m_waylandManager.
|
overridevirtual |
Test if the surface description is supported by the compositor
For some obscure reason Wayland compositors implemented transfer_function_srgb as gamma-2.2 transfer function, which caused a lot of confusion. Hence the enum is going to be deprecated in the upcoming version of the protocol.
https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/442
Implements KisSurfaceColorManagerInterface.
Definition at line 143 of file KisWaylandSurfaceColorManager.cpp.
References KisSurfaceColorimetry::SurfaceDescription::colorSpace, KisSurfaceColorimetry::ColorSpace::luminance, m_waylandManager, KisSurfaceColorimetry::SurfaceDescription::masteringInfo, KisSurfaceColorimetry::ColorSpace::primaries, and KisSurfaceColorimetry::ColorSpace::transferFunction.
|
overridevirtual |
It can return std::nullopt if the surface description is unset or if the connection to the compositor has been lost.
Implements KisSurfaceColorManagerInterface.
Definition at line 311 of file KisWaylandSurfaceColorManager.cpp.
References m_currentDescription.
|
private |
Definition at line 483 of file KisWaylandSurfaceColorManager.cpp.
References APIFeedbackCreated, Connected, Disconnected, m_currentDescription, m_platformWindowStateDetector, m_preferredDescription, m_renderingIntent, m_surface, m_surfaceCreatedConnection, m_surfaceDestroyedConnection, m_waylandManager, KisSurfaceColorManagerInterface::m_window, PreferredDescriptionReceived, WaylandSurfaceCreated, and WaylandWindowCreated.
|
private |
Initialization of the managed happens sequentially by transitioning through a set of states. Some states may be transitioned asynchronously, e.g. when Qt creates a platform windows or when it creates or recreates a surface.
Definition at line 396 of file KisWaylandSurfaceColorManager.cpp.
References APIFeedbackCreated, Connected, Disconnected, m_platformWindowStateDetector, m_preferredDescription, m_surface, m_surfaceCreatedConnection, m_surfaceDestroyedConnection, m_waylandManager, KisSurfaceColorManagerInterface::m_window, KisWaylandAPISurfaceFeedback::preferredChanged(), PreferredDescriptionReceived, PlatformWindowDetectionEventFilter::sigPlatformWindowCreated(), PlatformWindowDetectionEventFilter::sigPlatformWindowDestroyed(), slotPlatformWindowCreated(), slotPlatformWindowDestroyed(), slotPreferredChanged(), slotWaylandSurfaceCreated(), slotWaylandSurfaceDestroyed(), WaylandSurfaceCreated, and WaylandWindowCreated.
|
overridevirtual |
Unset the surface description of the underlying surface. In most of the compositors it means that the surface will be treated as sRGB.
Implements KisSurfaceColorManagerInterface.
Definition at line 302 of file KisWaylandSurfaceColorManager.cpp.
References m_currentDescription, m_isReady, m_renderingIntent, and m_surface.
|
private |
Definition at line 65 of file KisWaylandSurfaceColorManager.h.
|
private |
Definition at line 61 of file KisWaylandSurfaceColorManager.h.
|
private |
Definition at line 69 of file KisWaylandSurfaceColorManager.h.
|
private |
Definition at line 73 of file KisWaylandSurfaceColorManager.h.
|
private |
Definition at line 67 of file KisWaylandSurfaceColorManager.h.
|
private |
Definition at line 66 of file KisWaylandSurfaceColorManager.h.
|
private |
Definition at line 63 of file KisWaylandSurfaceColorManager.h.
|
private |
Definition at line 71 of file KisWaylandSurfaceColorManager.h.
|
private |
Definition at line 72 of file KisWaylandSurfaceColorManager.h.
|
private |
Definition at line 62 of file KisWaylandSurfaceColorManager.h.