renderer: add --no-fade-in (#453)

This commit is contained in:
Aaron Blasko 2024-08-03 17:34:54 +02:00 committed by GitHub
parent c7fa5026c0
commit 5d85ea03b0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 15 additions and 5 deletions

View File

@ -18,7 +18,7 @@
#include <fstream> #include <fstream>
#include <algorithm> #include <algorithm>
CHyprlock::CHyprlock(const std::string& wlDisplay, const bool immediate, const bool immediateRender) { CHyprlock::CHyprlock(const std::string& wlDisplay, const bool immediate, const bool immediateRender, const bool noFadeIn) {
m_sWaylandState.display = wl_display_connect(wlDisplay.empty() ? nullptr : wlDisplay.c_str()); m_sWaylandState.display = wl_display_connect(wlDisplay.empty() ? nullptr : wlDisplay.c_str());
if (!m_sWaylandState.display) { if (!m_sWaylandState.display) {
Debug::log(CRIT, "Couldn't connect to a wayland compositor"); Debug::log(CRIT, "Couldn't connect to a wayland compositor");
@ -40,6 +40,9 @@ CHyprlock::CHyprlock(const std::string& wlDisplay, const bool immediate, const b
const auto PIMMEDIATERENDER = (Hyprlang::INT* const*)g_pConfigManager->getValuePtr("general:immediate_render"); const auto PIMMEDIATERENDER = (Hyprlang::INT* const*)g_pConfigManager->getValuePtr("general:immediate_render");
m_bImmediateRender = immediateRender || **PIMMEDIATERENDER; m_bImmediateRender = immediateRender || **PIMMEDIATERENDER;
const auto* const PNOFADEIN = (Hyprlang::INT* const*)g_pConfigManager->getValuePtr("general:no_fade_in");
m_bNoFadeIn = noFadeIn || **PNOFADEIN;
} }
CHyprlock::~CHyprlock() { CHyprlock::~CHyprlock() {

View File

@ -25,7 +25,7 @@ struct SDMABUFModifier {
class CHyprlock { class CHyprlock {
public: public:
CHyprlock(const std::string& wlDisplay, const bool immediate, const bool immediateRender); CHyprlock(const std::string& wlDisplay, const bool immediate, const bool immediateRender, const bool noFadeIn);
~CHyprlock(); ~CHyprlock();
void run(); void run();
@ -102,6 +102,9 @@ class CHyprlock {
bool m_bFadeStarted = false; bool m_bFadeStarted = false;
bool m_bImmediateRender = false; bool m_bImmediateRender = false;
bool m_bNoFadeIn = false;
// //
std::chrono::system_clock::time_point m_tGraceEnds; std::chrono::system_clock::time_point m_tGraceEnds;
std::chrono::system_clock::time_point m_tFadeEnds; std::chrono::system_clock::time_point m_tFadeEnds;

View File

@ -14,6 +14,7 @@ void help() {
" --display NAME - Specify the Wayland display to connect to\n" " --display NAME - Specify the Wayland display to connect to\n"
" --immediate - Lock immediately, ignoring any configured grace period\n" " --immediate - Lock immediately, ignoring any configured grace period\n"
" --immediate-render - Do not wait for resources before drawing the background\n" " --immediate-render - Do not wait for resources before drawing the background\n"
" --no-fade-in - Disable the fade-in animation when the lock screen appears\n"
" -V, --version - Show version information\n" " -V, --version - Show version information\n"
" -h, --help - Show this help message\n"; " -h, --help - Show this help message\n";
} }
@ -32,6 +33,7 @@ int main(int argc, char** argv, char** envp) {
std::string wlDisplay; std::string wlDisplay;
bool immediate = false; bool immediate = false;
bool immediateRender = false; bool immediateRender = false;
bool noFadeIn = false;
std::vector<std::string> args(argv, argv + argc); std::vector<std::string> args(argv, argv + argc);
@ -72,6 +74,9 @@ int main(int argc, char** argv, char** envp) {
else if (arg == "--immediate-render") else if (arg == "--immediate-render")
immediateRender = true; immediateRender = true;
else if (arg == "--no-fade-in")
noFadeIn = true;
else { else {
std::cerr << "Unknown option: " << arg << "\n"; std::cerr << "Unknown option: " << arg << "\n";
help(); help();
@ -91,7 +96,7 @@ int main(int argc, char** argv, char** envp) {
} }
try { try {
g_pHyprlock = std::make_unique<CHyprlock>(wlDisplay, immediate, immediateRender); g_pHyprlock = std::make_unique<CHyprlock>(wlDisplay, immediate, immediateRender, noFadeIn);
g_pHyprlock->run(); g_pHyprlock->run();
} catch (const std::exception& ex) { } catch (const std::exception& ex) {
Debug::log(CRIT, "Hyprlock threw: {}", ex.what()); Debug::log(CRIT, "Hyprlock threw: {}", ex.what());

View File

@ -162,7 +162,6 @@ static bool firstFullFrame = false;
// //
CRenderer::SRenderFeedback CRenderer::renderLock(const CSessionLockSurface& surf) { CRenderer::SRenderFeedback CRenderer::renderLock(const CSessionLockSurface& surf) {
static auto* const PDISABLEBAR = (Hyprlang::INT* const*)g_pConfigManager->getValuePtr("general:disable_loading_bar"); static auto* const PDISABLEBAR = (Hyprlang::INT* const*)g_pConfigManager->getValuePtr("general:disable_loading_bar");
static auto* const PNOFADEIN = (Hyprlang::INT* const*)g_pConfigManager->getValuePtr("general:no_fade_in");
static auto* const PNOFADEOUT = (Hyprlang::INT* const*)g_pConfigManager->getValuePtr("general:no_fade_out"); static auto* const PNOFADEOUT = (Hyprlang::INT* const*)g_pConfigManager->getValuePtr("general:no_fade_out");
matrixProjection(projection.data(), surf.size.x, surf.size.y, WL_OUTPUT_TRANSFORM_NORMAL); matrixProjection(projection.data(), surf.size.x, surf.size.y, WL_OUTPUT_TRANSFORM_NORMAL);
@ -200,7 +199,7 @@ CRenderer::SRenderFeedback CRenderer::renderLock(const CSessionLockSurface& surf
bga = std::clamp(std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now() - firstFullFrameTime).count() / 500000.0, 0.0, 1.0); bga = std::clamp(std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now() - firstFullFrameTime).count() / 500000.0, 0.0, 1.0);
if (**PNOFADEIN) if (g_pHyprlock->m_bNoFadeIn)
bga = 1.0; bga = 1.0;
if (g_pHyprlock->m_bFadeStarted && !**PNOFADEOUT) { if (g_pHyprlock->m_bFadeStarted && !**PNOFADEOUT) {