bool StopDBus() { MOZ_ASSERT(!NS_IsMainThread()); NS_ENSURE_TRUE(gDBusServiceThread, true); if (gDBusThread) { static const char data = DBUS_EVENT_LOOP_EXIT; ssize_t wret = TEMP_FAILURE_RETRY(write(gDBusThread->mControlFdW.get(), &data, sizeof(data))); NS_ENSURE_TRUE(wret == 1, false); } #ifdef DEBUG LOG("DBus Thread Joining\n"); #endif if (NS_FAILED(gDBusServiceThread->Shutdown())) { NS_WARNING("DBus thread shutdown failed!"); } gDBusServiceThread = nullptr; #ifdef DEBUG LOG("DBus Thread Joined\n"); #endif if (gDBusThread) { gDBusThread->CleanUp(); gDBusThread = nullptr; } return true; }