Skip to content

Commit aafaad1

Browse files
committed
core/screenshot: light cleanups
1 parent 7906fdc commit aafaad1

File tree

2 files changed

+37
-43
lines changed

2 files changed

+37
-43
lines changed

core/internal/server/freedesktop/screensaver.go

Lines changed: 36 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -71,32 +71,10 @@ func (m *Manager) initializeScreensaver() error {
7171

7272
handler := &screensaverHandler{manager: m}
7373

74-
// Try to claim org.freedesktop.ScreenSaver (may fail if the compositor
75-
// or another process already owns this name).
76-
if reply, err := m.sessionConn.RequestName(dbusScreensaverName, dbus.NameFlagDoNotQueue); err != nil {
77-
log.Warnf("Failed to request screensaver name %s: %v", dbusScreensaverName, err)
78-
} else if reply != dbus.RequestNameReplyPrimaryOwner {
79-
log.Warnf("Screensaver name %s already owned by another process", dbusScreensaverName)
80-
} else if err := m.exportScreensaverOnPaths(handler, dbusScreensaverInterface,
81-
dbusScreensaverPath, dbusScreensaverPath2); err != nil {
82-
log.Warnf("Failed to export freedesktop screensaver: %v", err)
83-
} else {
84-
m.screensaverFreedesktopClaimed = true
85-
log.Infof("Claimed %s on session bus", dbusScreensaverName)
86-
}
87-
88-
// Try to claim org.gnome.ScreenSaver independently as a fallback.
89-
if reply, err := m.sessionConn.RequestName(dbusGnomeScreensaverName, dbus.NameFlagDoNotQueue); err != nil {
90-
log.Warnf("Failed to request screensaver name %s: %v", dbusGnomeScreensaverName, err)
91-
} else if reply != dbus.RequestNameReplyPrimaryOwner {
92-
log.Warnf("Screensaver name %s already owned by another process", dbusGnomeScreensaverName)
93-
} else if err := m.exportScreensaverOnPaths(handler, dbusGnomeScreensaverInterface,
94-
dbusGnomeScreensaverPath); err != nil {
95-
log.Warnf("Failed to export gnome screensaver: %v", err)
96-
} else {
97-
m.screensaverGnomeClaimed = true
98-
log.Infof("Claimed %s on session bus", dbusGnomeScreensaverName)
99-
}
74+
m.screensaverFreedesktopClaimed = m.claimScreensaverName(handler,
75+
dbusScreensaverName, dbusScreensaverInterface, dbusScreensaverPath, dbusScreensaverPath2)
76+
m.screensaverGnomeClaimed = m.claimScreensaverName(handler,
77+
dbusGnomeScreensaverName, dbusGnomeScreensaverInterface, dbusGnomeScreensaverPath)
10078

10179
if !m.screensaverFreedesktopClaimed && !m.screensaverGnomeClaimed {
10280
log.Warn("No screensaver interface could be claimed")
@@ -119,6 +97,24 @@ func (m *Manager) initializeScreensaver() error {
11997
return nil
12098
}
12199

100+
func (m *Manager) claimScreensaverName(handler *screensaverHandler, name, iface string, paths ...dbus.ObjectPath) bool {
101+
reply, err := m.sessionConn.RequestName(name, dbus.NameFlagDoNotQueue)
102+
if err != nil {
103+
log.Warnf("Failed to request screensaver name %s: %v", name, err)
104+
return false
105+
}
106+
if reply != dbus.RequestNameReplyPrimaryOwner {
107+
log.Warnf("Screensaver name %s already owned by another process", name)
108+
return false
109+
}
110+
if err := m.exportScreensaverOnPaths(handler, iface, paths...); err != nil {
111+
log.Warnf("Failed to export screensaver on %s: %v", name, err)
112+
return false
113+
}
114+
log.Infof("Claimed %s on session bus", name)
115+
return true
116+
}
117+
122118
// exportScreensaverOnPaths exports the handler and introspection on the given
123119
// paths under the specified interface name.
124120
func (m *Manager) exportScreensaverOnPaths(handler *screensaverHandler, ifaceName string, paths ...dbus.ObjectPath) error {
@@ -321,8 +317,6 @@ func (h *screensaverHandler) Lock() *dbus.Error {
321317
return nil
322318
}
323319

324-
// SetScreenLockActive updates the screensaver active (locked) state and emits
325-
// ActiveChanged on all claimed session bus interfaces.
326320
func (m *Manager) SetScreenLockActive(active bool) {
327321
m.stateMutex.Lock()
328322
changed := m.state.Screensaver.Active != active
@@ -334,22 +328,22 @@ func (m *Manager) SetScreenLockActive(active bool) {
334328
}
335329

336330
log.Infof("Screen lock active changed: %v", active)
331+
defer m.NotifyScreensaverSubscribers()
337332

338-
if m.sessionConn != nil {
339-
if m.screensaverFreedesktopClaimed {
340-
if err := m.sessionConn.Emit(dbusScreensaverPath, dbusScreensaverInterface+".ActiveChanged", active); err != nil {
341-
log.Warnf("Failed to emit ActiveChanged on %s: %v", dbusScreensaverPath, err)
342-
}
343-
if err := m.sessionConn.Emit(dbusScreensaverPath2, dbusScreensaverInterface+".ActiveChanged", active); err != nil {
344-
log.Warnf("Failed to emit ActiveChanged on %s: %v", dbusScreensaverPath2, err)
345-
}
333+
if m.sessionConn == nil {
334+
return
335+
}
336+
if m.screensaverFreedesktopClaimed {
337+
if err := m.sessionConn.Emit(dbusScreensaverPath, dbusScreensaverInterface+".ActiveChanged", active); err != nil {
338+
log.Warnf("Failed to emit ActiveChanged on %s: %v", dbusScreensaverPath, err)
346339
}
347-
if m.screensaverGnomeClaimed {
348-
if err := m.sessionConn.Emit(dbusGnomeScreensaverPath, dbusGnomeScreensaverInterface+".ActiveChanged", active); err != nil {
349-
log.Warnf("Failed to emit ActiveChanged on %s: %v", dbusGnomeScreensaverPath, err)
350-
}
340+
if err := m.sessionConn.Emit(dbusScreensaverPath2, dbusScreensaverInterface+".ActiveChanged", active); err != nil {
341+
log.Warnf("Failed to emit ActiveChanged on %s: %v", dbusScreensaverPath2, err)
342+
}
343+
}
344+
if m.screensaverGnomeClaimed {
345+
if err := m.sessionConn.Emit(dbusGnomeScreensaverPath, dbusGnomeScreensaverInterface+".ActiveChanged", active); err != nil {
346+
log.Warnf("Failed to emit ActiveChanged on %s: %v", dbusGnomeScreensaverPath, err)
351347
}
352348
}
353-
354-
m.NotifyScreensaverSubscribers()
355349
}

core/internal/server/server_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ func TestCleanupStaleSockets(t *testing.T) {
162162
tempDir := t.TempDir()
163163
t.Setenv("XDG_RUNTIME_DIR", tempDir)
164164

165-
staleSocket := filepath.Join(tempDir, "danklinux-999999.sock")
165+
staleSocket := filepath.Join(tempDir, "danklinux-4194305.sock")
166166
err := os.WriteFile(staleSocket, []byte{}, 0o600)
167167
require.NoError(t, err)
168168

0 commit comments

Comments
 (0)