Commit 32064a23 authored by Max Kellermann's avatar Max Kellermann

neighbor/udisks2: move Open()/Close() calls into the I/O thread

Fixes assertion failure.
parent c60b50b1
......@@ -31,6 +31,7 @@
#include "neighbor/Explorer.hxx"
#include "neighbor/Listener.hxx"
#include "neighbor/Info.hxx"
#include "event/Call.hxx"
#include "thread/Mutex.hxx"
#include "thread/SafeSingleton.hxx"
#include "util/Domain.hxx"
......@@ -107,6 +108,9 @@ public:
List GetList() const noexcept override;
private:
void DoOpen();
void DoClose() noexcept;
void Insert(UdisksObject &&o) noexcept;
void Remove(const std::string &path) noexcept;
......@@ -125,8 +129,8 @@ private:
void *user_data) noexcept;
};
void
UdisksNeighborExplorer::Open()
inline void
UdisksNeighborExplorer::DoOpen()
{
using namespace ODBus;
......@@ -160,10 +164,14 @@ UdisksNeighborExplorer::Open()
}
void
UdisksNeighborExplorer::Close() noexcept
UdisksNeighborExplorer::Open()
{
using namespace ODBus;
BlockingCall(GetEventLoop(), [this](){ DoOpen(); });
}
inline void
UdisksNeighborExplorer::DoClose() noexcept
{
if (pending_list_call) {
pending_list_call.Cancel();
}
......@@ -174,6 +182,12 @@ UdisksNeighborExplorer::Close() noexcept
dbus_glue.Destruct();
}
void
UdisksNeighborExplorer::Close() noexcept
{
BlockingCall(GetEventLoop(), [this](){ DoClose(); });
}
template<typename I>
gcc_pure
static const char *
......
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