Skip to content

Commit

Permalink
renderer: unload background texture if it's disabled
Browse files Browse the repository at this point in the history
ref #9031
  • Loading branch information
vaxerski committed Jan 14, 2025
1 parent f16f170 commit 25add26
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 10 deletions.
5 changes: 3 additions & 2 deletions src/config/ConfigManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -899,11 +899,12 @@ void CConfigManager::postConfigReload(const Hyprlang::CParseResult& result) {
g_pInputManager->setPointerConfigs();
g_pInputManager->setTouchDeviceConfigs();
g_pInputManager->setTabletConfigs();
}

if (!isFirstLaunch)
g_pHyprOpenGL->m_bReloadScreenShader = true;

g_pHyprOpenGL->ensureBackgroundTexturePresence();
}

// parseError will be displayed next frame

if (result.error)
Expand Down
21 changes: 14 additions & 7 deletions src/render/OpenGL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2699,10 +2699,6 @@ void CHyprOpenGLImpl::initMissingAssetTexture() {
void CHyprOpenGLImpl::initAssets() {
initMissingAssetTexture();

static auto PFORCEWALLPAPER = CConfigValue<Hyprlang::INT>("misc:force_default_wallpaper");

const auto FORCEWALLPAPER = std::clamp(*PFORCEWALLPAPER, static_cast<int64_t>(-1L), static_cast<int64_t>(2L));

m_pLockDeadTexture = loadAsset("lockdead.png");
m_pLockDead2Texture = loadAsset("lockdead2.png");

Expand All @@ -2712,9 +2708,20 @@ void CHyprOpenGLImpl::initAssets() {
"unknown"),
CHyprColor{0.9F, 0.9F, 0.9F, 0.7F}, 20, true);

// create the default background texture
{
std::string texPath = std::format("{}", "wall");
ensureBackgroundTexturePresence();
}

void CHyprOpenGLImpl::ensureBackgroundTexturePresence() {
static auto PNOWALLPAPER = CConfigValue<Hyprlang::INT>("misc:disable_hyprland_logo");
static auto PFORCEWALLPAPER = CConfigValue<Hyprlang::INT>("misc:force_default_wallpaper");

const auto FORCEWALLPAPER = std::clamp(*PFORCEWALLPAPER, static_cast<int64_t>(-1L), static_cast<int64_t>(2L));

if (*PNOWALLPAPER)
m_pBackgroundTexture.reset();
else if (!m_pBackgroundTexture) {
// create the default background texture
std::string texPath = "wall";

// get the adequate tex
if (FORCEWALLPAPER == -1) {
Expand Down
4 changes: 3 additions & 1 deletion src/render/OpenGL.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,8 @@ class CHyprOpenGLImpl {

void setDamage(const CRegion& damage, std::optional<CRegion> finalDamage = {});

void ensureBackgroundTexturePresence();

uint32_t getPreferredReadFormat(PHLMONITOR pMonitor);
std::vector<SDRMFormat> getDRMFormats();
EGLImageKHR createEGLImage(const Aquamarine::SDMABUFAttrs& attrs);
Expand Down Expand Up @@ -293,7 +295,7 @@ class CHyprOpenGLImpl {
CShader m_sFinalScreenShader;
CTimer m_tGlobalTimer;

SP<CTexture> m_pMissingAssetTexture, m_pBackgroundTexture, m_pLockDeadTexture, m_pLockDead2Texture, m_pLockTtyTextTexture;
SP<CTexture> m_pMissingAssetTexture, m_pBackgroundTexture, m_pLockDeadTexture, m_pLockDead2Texture, m_pLockTtyTextTexture; // TODO: don't always load lock

void logShaderError(const GLuint&, bool program = false);
GLuint createProgram(const std::string&, const std::string&, bool dynamic = false);
Expand Down

0 comments on commit 25add26

Please sign in to comment.