Skip to content

Commit 7f9eb08

Browse files
authored
output: add a pendingPageFlips() method (#251)
add a way to get if there are pending pageflip so the compositor can delay its commits.
1 parent ed26bdb commit 7f9eb08

7 files changed

Lines changed: 16 additions & 0 deletions

File tree

include/aquamarine/backend/DRM.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ namespace Aquamarine {
202202
virtual size_t getGammaSize();
203203
virtual size_t getDeGammaSize();
204204
virtual std::vector<SDRMFormat> getRenderFormats();
205+
virtual bool pendingPageFlip();
205206
void releaseMgpuResources();
206207

207208
int getConnectorID();

include/aquamarine/backend/Headless.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ namespace Aquamarine {
1919
virtual void scheduleFrame(const scheduleFrameReason reason = AQ_SCHEDULE_UNKNOWN);
2020
virtual bool destroy();
2121
virtual std::vector<SDRMFormat> getRenderFormats();
22+
virtual bool pendingPageFlip();
2223

2324
Hyprutils::Memory::CWeakPointer<CHeadlessOutput> self;
2425

include/aquamarine/backend/Wayland.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ namespace Aquamarine {
5050
virtual Hyprutils::Math::Vector2D cursorPlaneSize();
5151
virtual bool destroy();
5252
virtual std::vector<SDRMFormat> getRenderFormats();
53+
virtual bool pendingPageFlip();
5354

5455
Hyprutils::Memory::CWeakPointer<CWaylandOutput> self;
5556

include/aquamarine/output/Output.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ namespace Aquamarine {
171171
virtual size_t getGammaSize();
172172
virtual size_t getDeGammaSize();
173173
virtual bool destroy(); // not all backends allow this!!!
174+
virtual bool pendingPageFlip() = 0;
174175

175176
std::string name, description, make, model, serial;
176177
SParsedEDID parsedEDID;

src/backend/Headless.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ std::vector<SDRMFormat> Aquamarine::CHeadlessOutput::getRenderFormats() {
5555
return backend->getRenderFormats();
5656
}
5757

58+
bool Aquamarine::CHeadlessOutput::pendingPageFlip() {
59+
return false;
60+
}
61+
5862
Hyprutils::Memory::CSharedPointer<IBackendImplementation> Aquamarine::CHeadlessOutput::getBackend() {
5963
return backend.lock();
6064
}

src/backend/Wayland.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,10 @@ std::vector<SDRMFormat> Aquamarine::CWaylandOutput::getRenderFormats() {
534534
return backend->getRenderFormats();
535535
}
536536

537+
bool Aquamarine::CWaylandOutput::pendingPageFlip() {
538+
return false;
539+
}
540+
537541
bool Aquamarine::CWaylandOutput::destroy() {
538542
events.destroy.emit();
539543
waylandState.surface->sendAttach(nullptr, 0, 0);

src/backend/drm/DRM.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2223,6 +2223,10 @@ std::vector<SDRMFormat> Aquamarine::CDRMOutput::getRenderFormats() {
22232223
return connector->crtc->primary->formats;
22242224
}
22252225

2226+
bool Aquamarine::CDRMOutput::pendingPageFlip() {
2227+
return connector->isPageFlipPending;
2228+
}
2229+
22262230
int Aquamarine::CDRMOutput::getConnectorID() {
22272231
return connector->id;
22282232
}

0 commit comments

Comments
 (0)