From 78d6f15eadfdc6d2d4a166e0e559ebad0a34723e Mon Sep 17 00:00:00 2001 From: Marcus Fritzsch Date: Tue, 12 Sep 2017 11:29:37 +0200 Subject: [PATCH] App: make a couple of methods private to signal internal use Signed-off-by: Marcus Fritzsch --- src/afb_binding_api.cpp | 2 +- src/app.cpp | 21 +++++++++++++++++++++ src/app.hpp | 33 +++++++++++++-------------------- 3 files changed, 35 insertions(+), 21 deletions(-) diff --git a/src/afb_binding_api.cpp b/src/afb_binding_api.cpp index cdd1a19..9fd2430 100644 --- a/src/afb_binding_api.cpp +++ b/src/afb_binding_api.cpp @@ -107,7 +107,7 @@ binding_api::result_type binding_api::debug_terminate() { } binding_api::result_type binding_api::ping() { - this->app->dispatch_pending_events(); + this->app->api_ping(); return Ok(json_object_new_object()); } diff --git a/src/app.cpp b/src/app.cpp index e58c85d..cf7b6be 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -169,6 +169,23 @@ int App::dispatch_pending_events() { return -1; } +bool App::pop_pending_events() { + bool x{true}; + return this->pending_events.compare_exchange_strong( + x, false, std::memory_order_consume); +} + +void App::set_pending_events() { + this->pending_events.store(true, std::memory_order_release); +} + +optional App::lookup_id(char const *name) { + return this->id_alloc.lookup(std::string(name)); +} +optional App::lookup_name(int id) { + return this->id_alloc.lookup(id); +} + // _ _ _ _ _ ____ // (_)_ __ (_) |_ | | __ _ _ _ ___ _ _| |_ / /\ \ // | | '_ \| | __| | |/ _` | | | |/ _ \| | | | __| | | | @@ -587,6 +604,10 @@ char const *App::api_enddraw(char const *drawing_name) { return "No EndDraw pending for surface"; } +void App::api_ping() { + this->dispatch_pending_events(); +} + // _ _ _____ _ // _ __ _ __ _____ _(_) ___ __| | | ____|_ _____ _ __ | |_ ___ // | '_ \| '__/ _ \ \/ / |/ _ \/ _` | | _| \ \ / / _ \ '_ \| __/ __| diff --git a/src/app.hpp b/src/app.hpp index 5ef7ab4..6e18855 100644 --- a/src/app.hpp +++ b/src/app.hpp @@ -120,27 +120,11 @@ struct App { // ID allocation and proxy methods for lookup struct id_allocator id_alloc; - optional lookup_id(char const *name) { - return this->id_alloc.lookup(std::string(name)); - } - optional lookup_name(int id) { - return this->id_alloc.lookup(id); - } // Set by AFB API when wayland events need to be dispatched std::atomic pending_events; - void set_pending_events() { - this->pending_events.store(true, std::memory_order_release); - } - bool pop_pending_events() { - bool x{true}; - return this->pending_events.compare_exchange_strong( - x, false, std::memory_order_consume); - } std::vector pending_end_draw; - void enqueue_flushdraw(int surface_id); - void check_flushdraw(int surface_id); explicit App(wl::display *d); ~App(); @@ -151,26 +135,35 @@ struct App { App &operator=(App &&) = delete; int init(); - int init_layers(); int dispatch_events(); int dispatch_pending_events(); void surface_set_layout_full(uint32_t surface_id); void surface_set_layout_split(uint32_t surface_id, uint32_t sub_surface_id); + void set_pending_events(); - // Allocate a surface ID for this role result api_request_surface(char const *drawing_name); - - // Activate (i.e. make visible, if allowed!) a surface char const *api_activate_surface(char const *drawing_name); char const *api_deactivate_surface(char const *drawing_name); char const *api_enddraw(char const *drawing_name); + void api_ping(); // Events from the compositor we are interested in void surface_created(uint32_t surface_id); void surface_removed(uint32_t surface_id); +private: + optional lookup_id(char const *name); + optional lookup_name(int id); + + bool pop_pending_events(); + + void enqueue_flushdraw(int surface_id); + void check_flushdraw(int surface_id); + + int init_layers(); + // TMC WM Events to clients void emit_activated(char const *label); void emit_deactivated(char const *label); -- 2.16.6