|
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 51 of file KisWaylandSurfaceColorManager.cpp.
References connect(), getOrCreateGlobalWaylandManager(), m_waylandManager, reinitialize(), and KisWaylandAPIColorManager::sigReadyChanged().
|
override |
Definition at line 66 of file KisWaylandSurfaceColorManager.cpp.
|
static |
Definition at line 37 of file KisWaylandSurfaceColorManager.cpp.
|
overridevirtual |
Implements KisSurfaceColorManagerInterface.
Definition at line 132 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 315 of file KisWaylandSurfaceColorManager.cpp.
References m_preferredDescription.
|
private |
Definition at line 112 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 310 of file KisWaylandSurfaceColorManager.cpp.
References m_renderingIntent.
|
private |
Definition at line 70 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 227 of file KisWaylandSurfaceColorManager.cpp.
References connect(), KisWaylandAPIImageDescriptionCreatorParams::createImageDescription(), m_currentDescription, m_isReady, m_renderingIntent, m_surface, m_waylandManager, KisSurfaceColorManagerInterface::m_window, KisWaylandAPIImageDescriptionNoInfo::sigDescriptionConstructed(), and supportsSurfaceDescription().
|
privateslot |
Definition at line 336 of file KisWaylandSurfaceColorManager.cpp.
References Connected, KIS_SAFE_ASSERT_RECOVER_RETURN, m_currentState, ppVar, setReadyImpl(), tryDeinitialize(), tryInitilize(), and WaylandWindowCreated.
|
privateslot |
Definition at line 355 of file KisWaylandSurfaceColorManager.cpp.
References Connected, KIS_SAFE_ASSERT_RECOVER_NOOP, m_currentState, setReadyImpl(), and tryDeinitialize().
|
privateslot |
Definition at line 320 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 363 of file KisWaylandSurfaceColorManager.cpp.
References KIS_SAFE_ASSERT_RECOVER_RETURN, m_currentState, ppVar, setReadyImpl(), tryDeinitialize(), tryInitilize(), WaylandSurfaceCreated, and WaylandWindowCreated.
|
privateslot |
Definition at line 381 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 215 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 137 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 305 of file KisWaylandSurfaceColorManager.cpp.
References m_currentDescription.
|
private |
Definition at line 477 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 390 of file KisWaylandSurfaceColorManager.cpp.
References APIFeedbackCreated, connect(), 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 296 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.