From b87f46acc5b0b252e4642f2130ef3093294afac8 Mon Sep 17 00:00:00 2001 From: Marius Vlad Date: Wed, 31 Jan 2024 14:15:02 +0200 Subject: [PATCH] grpc-proxy/shell: Add width for split window It might be useful in the future to let clients choose how much of the window to split so allow passing that. Note that there's no actual implementation but if there's a need in the future it can be easily added so it's better to add this now. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad Change-Id: I82f36e86f56b0a65cbacac8368b63f68df69a350 --- grpc-proxy/agl_shell.proto | 3 ++- grpc-proxy/grpc-async-cb.cpp | 2 +- grpc-proxy/shell.cpp | 4 ++-- grpc-proxy/shell.h | 2 +- protocol/agl-shell.xml | 7 ++++++- src/shell.c | 6 +----- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/grpc-proxy/agl_shell.proto b/grpc-proxy/agl_shell.proto index cb9f191..c8d57ac 100644 --- a/grpc-proxy/agl_shell.proto +++ b/grpc-proxy/agl_shell.proto @@ -36,7 +36,8 @@ message DeactivateResponse { message SplitRequest { string app_id = 1; int32 tile_orientation = 2; - string output_name = 3; + int32 width = 3; + string output_name = 4; } message SplitResponse { diff --git a/grpc-proxy/grpc-async-cb.cpp b/grpc-proxy/grpc-async-cb.cpp index 8c4ed24..23a293d 100644 --- a/grpc-proxy/grpc-async-cb.cpp +++ b/grpc-proxy/grpc-async-cb.cpp @@ -225,7 +225,7 @@ GrpcServiceImpl::SetAppSplit(grpc::CallbackServerContext *context, LOG("m_aglShell not set-up\n"); return nullptr; } - m_aglShell->SetAppSplit(request->app_id(), request->tile_orientation(), request->output_name()); + m_aglShell->SetAppSplit(request->app_id(), request->tile_orientation(), request->width(), request->output_name()); grpc::ServerUnaryReactor* reactor = context->DefaultReactor(); reactor->Finish(grpc::Status::OK); diff --git a/grpc-proxy/shell.cpp b/grpc-proxy/shell.cpp index 8e78b20..6dffe6b 100644 --- a/grpc-proxy/shell.cpp +++ b/grpc-proxy/shell.cpp @@ -140,7 +140,7 @@ Shell::SetAppScale(const std::string &app_id, } void -Shell::SetAppSplit(const std::string &app_id, uint32_t orientation, const std::string &output_name) +Shell::SetAppSplit(const std::string &app_id, uint32_t orientation, uint32_t width, const std::string &output_name) { struct window_output *woutput, *w_output; struct agl_shell *shell = this->m_shell.get(); @@ -161,6 +161,6 @@ Shell::SetAppSplit(const std::string &app_id, uint32_t orientation, const std::s w_output, link); - agl_shell_set_app_split(shell, app_id.c_str(), orientation, w_output->output); + agl_shell_set_app_split(shell, app_id.c_str(), orientation, width, w_output->output); wl_display_flush(m_shell_data->wl_display); } diff --git a/grpc-proxy/shell.h b/grpc-proxy/shell.h index 587ed90..f428088 100644 --- a/grpc-proxy/shell.h +++ b/grpc-proxy/shell.h @@ -40,7 +40,7 @@ public: m_shell(shell), m_shell_data(sh_data) { } void ActivateApp(const std::string &app_id, const std::string &output_name); void DeactivateApp(const std::string &app_id); - void SetAppSplit(const std::string &app_id, uint32_t orientation, const std::string &output_name); + void SetAppSplit(const std::string &app_id, uint32_t orientation, uint32_t width, const std::string &output_name); void SetAppFloat(const std::string &app_id, int32_t x_pos, int32_t y_pos); void SetAppNormal(const std::string &app_id); diff --git a/protocol/agl-shell.xml b/protocol/agl-shell.xml index f8aee4c..4f71a51 100644 --- a/protocol/agl-shell.xml +++ b/protocol/agl-shell.xml @@ -352,7 +352,7 @@ - + This requests asks the compositor to change the application from the original mode (whatever that might be) to a split, tiled orientation mode defined in the tile orientation enum. @@ -406,11 +406,16 @@ such that users can cycle between that one or the other, assumes there's another window in the first place. + A width size can also be specified for the split window. Note that this + width can't exceed the output width value, or the compositor can choose + to ignore this value. + See xdg_toplevel.set_app_id from the xdg-shell protocol for a description of app_id. + diff --git a/src/shell.c b/src/shell.c index b8f096a..13c03f0 100644 --- a/src/shell.c +++ b/src/shell.c @@ -1896,7 +1896,7 @@ shell_ivi_surf_count_split_surfaces(struct ivi_compositor *ivi) static void shell_set_app_split(struct wl_client *client, struct wl_resource *res, - const char *app_id, uint32_t orientation, + const char *app_id, uint32_t orientation, int32_t width, struct wl_resource *output_res) { struct ivi_surface *surf; @@ -1921,10 +1921,6 @@ void shell_set_app_split(struct wl_client *client, struct wl_resource *res, return; } - /* otherwise, take actions now */ - weston_log("%s() added split surface for app_id '%s' with orientation %d\n", - __func__, app_id, orientation); - if (output->previous_active) { struct weston_view *ev = output->previous_active->view; -- 2.16.6