fix(client): try to fix #20

This commit is contained in:
Alexis 2018-08-15 01:53:43 +02:00
parent cee031d2fa
commit d1d51b76aa
2 changed files with 16 additions and 8 deletions

View File

@ -21,11 +21,12 @@ namespace waybar {
Gtk::Main gtk_main; Gtk::Main gtk_main;
Glib::RefPtr<Gdk::Display> gdk_display; Glib::RefPtr<Gdk::Display> gdk_display;
struct wl_display *wlDisplay; struct wl_display *wlDisplay = nullptr;
struct wl_registry *registry; struct wl_registry *registry = nullptr;
struct zwlr_layer_shell_v1 *layer_shell; struct zwlr_layer_shell_v1 *layer_shell = nullptr;
struct zxdg_output_manager_v1 *xdg_output_manager; struct zxdg_output_manager_v1 *xdg_output_manager = nullptr;
struct wl_seat *seat; struct wl_seat *seat = nullptr;
struct wl_output *wlOutput = nullptr;
std::vector<std::unique_ptr<Bar>> bars; std::vector<std::unique_ptr<Bar>> bars;
Client(int argc, char* argv[]); Client(int argc, char* argv[]);

View File

@ -46,9 +46,11 @@ void waybar::Client::_handle_global(void *data, struct wl_registry *registry,
o->layer_shell = (zwlr_layer_shell_v1 *)wl_registry_bind(registry, name, o->layer_shell = (zwlr_layer_shell_v1 *)wl_registry_bind(registry, name,
&zwlr_layer_shell_v1_interface, version); &zwlr_layer_shell_v1_interface, version);
} else if (!strcmp(interface, wl_output_interface.name)) { } else if (!strcmp(interface, wl_output_interface.name)) {
auto output = std::make_unique<struct wl_output *>(); o->wlOutput = (struct wl_output *)wl_registry_bind(registry, name,
*output = (struct wl_output *)wl_registry_bind(registry, name,
&wl_output_interface, version); &wl_output_interface, version);
auto output = std::make_unique<struct wl_output *>();
*output = o->wlOutput;
if (o->xdg_output_manager)
o->bars.emplace_back(std::make_unique<Bar>(*o, std::move(output))); o->bars.emplace_back(std::make_unique<Bar>(*o, std::move(output)));
} else if (!strcmp(interface, wl_seat_interface.name)) { } else if (!strcmp(interface, wl_seat_interface.name)) {
o->seat = (struct wl_seat *)wl_registry_bind(registry, name, o->seat = (struct wl_seat *)wl_registry_bind(registry, name,
@ -58,6 +60,11 @@ void waybar::Client::_handle_global(void *data, struct wl_registry *registry,
o->xdg_output_manager = o->xdg_output_manager =
(struct zxdg_output_manager_v1 *)wl_registry_bind(registry, name, (struct zxdg_output_manager_v1 *)wl_registry_bind(registry, name,
&zxdg_output_manager_v1_interface, ZXDG_OUTPUT_V1_NAME_SINCE_VERSION); &zxdg_output_manager_v1_interface, ZXDG_OUTPUT_V1_NAME_SINCE_VERSION);
if (o->wlOutput) {
auto output = std::make_unique<struct wl_output *>();
*output = o->wlOutput;
o->bars.emplace_back(std::make_unique<Bar>(*o, std::move(output)));
}
} }
} }