wayland: one less level of unique_ptr
authorMarcus Fritzsch <marcus_fritzsch@mentor.com>
Mon, 26 Jun 2017 10:18:31 +0000 (12:18 +0200)
committerMarcus Fritzsch <marcus_fritzsch@mentor.com>
Tue, 8 Aug 2017 15:24:00 +0000 (17:24 +0200)
Display now holds struct registry by value, as holding it through a
unique_ptr was rather unnecessary.

Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
src/main.cpp
src/wayland.cpp
src/wayland.hpp

index 9b2f48a..146020e 100644 (file)
@@ -127,12 +127,12 @@ int main(int argc, char **argv) {
 
    struct conn c{};
 
-   d->r->add_global_handler(
+   d->r.add_global_handler(
       "ivi_controller", [&c](wl_registry *r, uint32_t name, uint32_t v) {
          c.c = std::make_unique<genivi::controller>(r, name, v);
       });
 
-   d->r->add_global_handler(
+   d->r.add_global_handler(
       "wl_output", [&c](wl_registry *r, uint32_t name, uint32_t v) {
          c.outputs.emplace_back(std::make_unique<wl::output>(r, name, v));
       });
index 0862475..baf1aaa 100644 (file)
@@ -22,7 +22,7 @@ display::display()
            logdebug("wl::display ~display @ %p", d);
            wl_display_disconnect(d);
         })),
-     r(!d ? nullptr : std::make_unique<struct registry>(d.get())) {}
+     r(d.get()) {}
 
 display::~display() {}
 
index df9b68e..dc1d729 100644 (file)
@@ -39,7 +39,25 @@ struct wayland_proxy {
 // |_| |_|\__,_|_| |_| |_|\___||___/ .__/ \__,_|\___\___|   \_/\_/ |_|
 //                                 |_|
 namespace wl {
-struct registry;
+//                 _     _
+//  _ __ ___  __ _(_)___| |_ _ __ _   _
+// | '__/ _ \/ _` | / __| __| '__| | | |
+// | | |  __/ (_| | \__ \ |_| |  | |_| |
+// |_|  \___|\__, |_|___/\__|_|   \__, |
+//           |___/                |___/
+struct registry : public wayland_proxy<struct wl_registry> {
+    typedef std::function<void(struct wl_registry *, uint32_t, uint32_t)> binder;
+    std::unordered_map<std::string, binder> bindings;
+
+    registry(struct wl_display *d);
+    ~registry();
+
+    void add_global_handler(char const *iface, binder bind);
+
+    // Events
+    void global(uint32_t name, char const *iface, uint32_t v);
+    void global_remove(uint32_t name);
+};
 
 //      _ _           _
 //   __| (_)___ _ __ | | __ _ _   _
@@ -50,7 +68,7 @@ struct registry;
 struct display {
    std::unique_ptr<struct wl_display, std::function<void(struct wl_display *)>>
       d;
-   std::unique_ptr<struct registry> r;
+   struct registry r;
 
    display();
    ~display();
@@ -61,26 +79,6 @@ struct display {
    int get_fd() const;
 };
 
-//                 _     _
-//  _ __ ___  __ _(_)___| |_ _ __ _   _
-// | '__/ _ \/ _` | / __| __| '__| | | |
-// | | |  __/ (_| | \__ \ |_| |  | |_| |
-// |_|  \___|\__, |_|___/\__|_|   \__, |
-//           |___/                |___/
-struct registry : public wayland_proxy<struct wl_registry> {
-   typedef std::function<void(struct wl_registry *, uint32_t, uint32_t)> binder;
-   std::unordered_map<std::string, binder> bindings;
-
-   registry(struct wl_display *d);
-   ~registry();
-
-   void add_global_handler(char const *iface, binder bind);
-
-   // Events
-   void global(uint32_t name, char const *iface, uint32_t v);
-   void global_remove(uint32_t name);
-};
-
 //              _               _
 //   ___  _   _| |_ _ __  _   _| |_
 //  / _ \| | | | __| '_ \| | | | __|