Commit 0240e754 authored by Max Kellermann's avatar Max Kellermann

db_lock: add C++ helper class ScopeDatabaseLock

parent 7102ed80
...@@ -250,11 +250,8 @@ SimpleDatabase::LookupDirectory(const char *uri) const ...@@ -250,11 +250,8 @@ SimpleDatabase::LookupDirectory(const char *uri) const
assert(root != NULL); assert(root != NULL);
assert(uri != NULL); assert(uri != NULL);
db_lock(); ScopeDatabaseLock protect;
struct directory *directory = return directory_lookup_directory(root, uri);
directory_lookup_directory(root, uri);
db_unlock();
return directory;
} }
bool bool
...@@ -281,12 +278,10 @@ SimpleDatabase::Visit(const DatabaseSelection &selection, ...@@ -281,12 +278,10 @@ SimpleDatabase::Visit(const DatabaseSelection &selection,
!visit_directory(*directory, error_r)) !visit_directory(*directory, error_r))
return false; return false;
db_lock(); ScopeDatabaseLock protect;
bool ret = directory->Walk(selection.recursive, selection.filter, return directory->Walk(selection.recursive, selection.filter,
visit_directory, visit_song, visit_playlist, visit_directory, visit_song, visit_playlist,
error_r); error_r);
db_unlock();
return ret;
} }
bool bool
......
...@@ -81,4 +81,19 @@ db_unlock(void) ...@@ -81,4 +81,19 @@ db_unlock(void)
g_static_mutex_unlock(&db_mutex); g_static_mutex_unlock(&db_mutex);
} }
#ifdef __cplusplus
class ScopeDatabaseLock {
public:
ScopeDatabaseLock() {
db_lock();
}
~ScopeDatabaseLock() {
db_unlock();
}
};
#endif
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment