fix(thread): check before detach

This commit is contained in:
Alexis 2018-08-29 21:07:58 +02:00
parent 9a1b8bb831
commit d0933ab50f
No known key found for this signature in database
GPG Key ID: 20B1EC2EBBA96BD9
3 changed files with 13 additions and 5 deletions

View File

@ -74,7 +74,9 @@ struct SleeperThread {
{
do_run_ = false;
condvar_.notify_all();
thread_.detach();
if (thread_.joinable()) {
thread_.detach();
}
}
private:

View File

@ -1,10 +1,16 @@
#include "client.hpp"
waybar::Client::Client(int argc, char* argv[])
: gtk_app(Gtk::Application::create(argc, argv, "org.alexays.waybar")),
gdk_display(Gdk::Display::get_default()),
wl_display(gdk_wayland_display_get_wl_display(gdk_display->gobj()))
: gtk_app(Gtk::Application::create(argc, argv, "fr.arouillard.waybar")),
gdk_display(Gdk::Display::get_default())
{
if (!gdk_display) {
throw std::runtime_error("Can't find display");
}
if (!GDK_IS_WAYLAND_DISPLAY(gdk_display->gobj())) {
throw std::runtime_error("Bar need to run under Wayland");
}
wl_display = gdk_wayland_display_get_wl_display(gdk_display->gobj());
auto getFirstValidPath = [] (std::vector<std::string> possiblePaths) {
wordexp_t p;

View File

@ -48,7 +48,7 @@ int waybar::modules::sway::Ipc::open(const std::string& socketPath) const
addr.sun_path[sizeof(addr.sun_path) - 1] = 0;
int l = sizeof(struct sockaddr_un);
if (::connect(fd, reinterpret_cast<struct sockaddr *>(&addr), l) == -1) {
throw std::runtime_error("Unable to connect to " + socketPath);
throw std::runtime_error("Unable to connect to Sway");
}
return fd;
}