db: Don't notify if the active-playlist doesn't change

This lets us skip a handful of database calls if we detect that we're
setting the active playlist to the same value.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2023-06-06 09:29:16 -04:00
parent 59fb7d12f3
commit 57dd2c280e
2 changed files with 7 additions and 0 deletions

View File

@ -82,6 +82,8 @@ class Connection(connection.Connection):
def set_active_playlist(self, plist: playlist.Playlist) -> None:
"""Set the currently active playlist."""
if self.active_playlist == plist:
return
if self.active_playlist is not None:
self.active_playlist.active = False

View File

@ -114,6 +114,11 @@ class TestConnection(tests.util.TestCase):
self.assertFalse(plist1.active)
self.assertTrue(plist2.active)
notify = unittest.mock.Mock()
self.sql.connect("notify::active-playlist", notify)
self.sql.set_active_playlist(plist2)
notify.assert_not_called()
self.sql.set_active_playlist(None)
self.assertIsNone(self.sql.active_playlist)
self.assertFalse(plist2.active)