mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-04-03 20:32:07 -04:00
core/screenshot: light cleanups
This commit is contained in:
@@ -71,32 +71,10 @@ func (m *Manager) initializeScreensaver() error {
|
|||||||
|
|
||||||
handler := &screensaverHandler{manager: m}
|
handler := &screensaverHandler{manager: m}
|
||||||
|
|
||||||
// Try to claim org.freedesktop.ScreenSaver (may fail if the compositor
|
m.screensaverFreedesktopClaimed = m.claimScreensaverName(handler,
|
||||||
// or another process already owns this name).
|
dbusScreensaverName, dbusScreensaverInterface, dbusScreensaverPath, dbusScreensaverPath2)
|
||||||
if reply, err := m.sessionConn.RequestName(dbusScreensaverName, dbus.NameFlagDoNotQueue); err != nil {
|
m.screensaverGnomeClaimed = m.claimScreensaverName(handler,
|
||||||
log.Warnf("Failed to request screensaver name %s: %v", dbusScreensaverName, err)
|
dbusGnomeScreensaverName, dbusGnomeScreensaverInterface, dbusGnomeScreensaverPath)
|
||||||
} else if reply != dbus.RequestNameReplyPrimaryOwner {
|
|
||||||
log.Warnf("Screensaver name %s already owned by another process", dbusScreensaverName)
|
|
||||||
} else if err := m.exportScreensaverOnPaths(handler, dbusScreensaverInterface,
|
|
||||||
dbusScreensaverPath, dbusScreensaverPath2); err != nil {
|
|
||||||
log.Warnf("Failed to export freedesktop screensaver: %v", err)
|
|
||||||
} else {
|
|
||||||
m.screensaverFreedesktopClaimed = true
|
|
||||||
log.Infof("Claimed %s on session bus", dbusScreensaverName)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to claim org.gnome.ScreenSaver independently as a fallback.
|
|
||||||
if reply, err := m.sessionConn.RequestName(dbusGnomeScreensaverName, dbus.NameFlagDoNotQueue); err != nil {
|
|
||||||
log.Warnf("Failed to request screensaver name %s: %v", dbusGnomeScreensaverName, err)
|
|
||||||
} else if reply != dbus.RequestNameReplyPrimaryOwner {
|
|
||||||
log.Warnf("Screensaver name %s already owned by another process", dbusGnomeScreensaverName)
|
|
||||||
} else if err := m.exportScreensaverOnPaths(handler, dbusGnomeScreensaverInterface,
|
|
||||||
dbusGnomeScreensaverPath); err != nil {
|
|
||||||
log.Warnf("Failed to export gnome screensaver: %v", err)
|
|
||||||
} else {
|
|
||||||
m.screensaverGnomeClaimed = true
|
|
||||||
log.Infof("Claimed %s on session bus", dbusGnomeScreensaverName)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !m.screensaverFreedesktopClaimed && !m.screensaverGnomeClaimed {
|
if !m.screensaverFreedesktopClaimed && !m.screensaverGnomeClaimed {
|
||||||
log.Warn("No screensaver interface could be claimed")
|
log.Warn("No screensaver interface could be claimed")
|
||||||
@@ -119,6 +97,24 @@ func (m *Manager) initializeScreensaver() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Manager) claimScreensaverName(handler *screensaverHandler, name, iface string, paths ...dbus.ObjectPath) bool {
|
||||||
|
reply, err := m.sessionConn.RequestName(name, dbus.NameFlagDoNotQueue)
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf("Failed to request screensaver name %s: %v", name, err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if reply != dbus.RequestNameReplyPrimaryOwner {
|
||||||
|
log.Warnf("Screensaver name %s already owned by another process", name)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if err := m.exportScreensaverOnPaths(handler, iface, paths...); err != nil {
|
||||||
|
log.Warnf("Failed to export screensaver on %s: %v", name, err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
log.Infof("Claimed %s on session bus", name)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// exportScreensaverOnPaths exports the handler and introspection on the given
|
// exportScreensaverOnPaths exports the handler and introspection on the given
|
||||||
// paths under the specified interface name.
|
// paths under the specified interface name.
|
||||||
func (m *Manager) exportScreensaverOnPaths(handler *screensaverHandler, ifaceName string, paths ...dbus.ObjectPath) error {
|
func (m *Manager) exportScreensaverOnPaths(handler *screensaverHandler, ifaceName string, paths ...dbus.ObjectPath) error {
|
||||||
@@ -321,8 +317,6 @@ func (h *screensaverHandler) Lock() *dbus.Error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetScreenLockActive updates the screensaver active (locked) state and emits
|
|
||||||
// ActiveChanged on all claimed session bus interfaces.
|
|
||||||
func (m *Manager) SetScreenLockActive(active bool) {
|
func (m *Manager) SetScreenLockActive(active bool) {
|
||||||
m.stateMutex.Lock()
|
m.stateMutex.Lock()
|
||||||
changed := m.state.Screensaver.Active != active
|
changed := m.state.Screensaver.Active != active
|
||||||
@@ -334,22 +328,22 @@ func (m *Manager) SetScreenLockActive(active bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
log.Infof("Screen lock active changed: %v", active)
|
log.Infof("Screen lock active changed: %v", active)
|
||||||
|
defer m.NotifyScreensaverSubscribers()
|
||||||
|
|
||||||
if m.sessionConn != nil {
|
if m.sessionConn == nil {
|
||||||
if m.screensaverFreedesktopClaimed {
|
return
|
||||||
if err := m.sessionConn.Emit(dbusScreensaverPath, dbusScreensaverInterface+".ActiveChanged", active); err != nil {
|
}
|
||||||
log.Warnf("Failed to emit ActiveChanged on %s: %v", dbusScreensaverPath, err)
|
if m.screensaverFreedesktopClaimed {
|
||||||
}
|
if err := m.sessionConn.Emit(dbusScreensaverPath, dbusScreensaverInterface+".ActiveChanged", active); err != nil {
|
||||||
if err := m.sessionConn.Emit(dbusScreensaverPath2, dbusScreensaverInterface+".ActiveChanged", active); err != nil {
|
log.Warnf("Failed to emit ActiveChanged on %s: %v", dbusScreensaverPath, err)
|
||||||
log.Warnf("Failed to emit ActiveChanged on %s: %v", dbusScreensaverPath2, err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if m.screensaverGnomeClaimed {
|
if err := m.sessionConn.Emit(dbusScreensaverPath2, dbusScreensaverInterface+".ActiveChanged", active); err != nil {
|
||||||
if err := m.sessionConn.Emit(dbusGnomeScreensaverPath, dbusGnomeScreensaverInterface+".ActiveChanged", active); err != nil {
|
log.Warnf("Failed to emit ActiveChanged on %s: %v", dbusScreensaverPath2, err)
|
||||||
log.Warnf("Failed to emit ActiveChanged on %s: %v", dbusGnomeScreensaverPath, err)
|
}
|
||||||
}
|
}
|
||||||
|
if m.screensaverGnomeClaimed {
|
||||||
|
if err := m.sessionConn.Emit(dbusGnomeScreensaverPath, dbusGnomeScreensaverInterface+".ActiveChanged", active); err != nil {
|
||||||
|
log.Warnf("Failed to emit ActiveChanged on %s: %v", dbusGnomeScreensaverPath, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m.NotifyScreensaverSubscribers()
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ func TestCleanupStaleSockets(t *testing.T) {
|
|||||||
tempDir := t.TempDir()
|
tempDir := t.TempDir()
|
||||||
t.Setenv("XDG_RUNTIME_DIR", tempDir)
|
t.Setenv("XDG_RUNTIME_DIR", tempDir)
|
||||||
|
|
||||||
staleSocket := filepath.Join(tempDir, "danklinux-999999.sock")
|
staleSocket := filepath.Join(tempDir, "danklinux-4194305.sock")
|
||||||
err := os.WriteFile(staleSocket, []byte{}, 0o600)
|
err := os.WriteFile(staleSocket, []byte{}, 0o600)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user