diff --git a/doc/changes/ipc/mr.2400.md b/doc/changes/ipc/mr.2400.md new file mode 100644 index 000000000..e7462d367 --- /dev/null +++ b/doc/changes/ipc/mr.2400.md @@ -0,0 +1 @@ +Add: Interface to the server to better control the debug gui. diff --git a/src/xrt/ipc/server/ipc_server_interface.h b/src/xrt/ipc/server/ipc_server_interface.h index 345519e7c..b870a52c8 100644 --- a/src/xrt/ipc/server/ipc_server_interface.h +++ b/src/xrt/ipc/server/ipc_server_interface.h @@ -1,4 +1,5 @@ // Copyright 2020-2023, Collabora, Ltd. +// Copyright 2024-2025, NVIDIA CORPORATION. // SPDX-License-Identifier: BSL-1.0 /*! * @file @@ -12,6 +13,11 @@ #include "xrt/xrt_compiler.h" #include "xrt/xrt_config_os.h" +#ifndef XRT_OS_ANDROID +#include "util/u_debug_gui.h" +#endif + + #ifdef __cplusplus extern "C" { #endif @@ -19,13 +25,25 @@ extern "C" { #ifndef XRT_OS_ANDROID +/*! + * Information passed into the IPC server main function, used for customization + * of the IPC server. + * + * @ingroup ipc_server + */ +struct ipc_server_main_info +{ + //! Information passed onto the debug gui. + struct u_debug_gui_create_info udgci; +}; + /*! * Main entrypoint to the compositor process. * * @ingroup ipc_server */ int -ipc_server_main(int argc, char **argv); +ipc_server_main(int argc, char **argv, const struct ipc_server_main_info *ismi); #endif diff --git a/src/xrt/ipc/server/ipc_server_process.c b/src/xrt/ipc/server/ipc_server_process.c index 2bf73ff03..2fe7285bc 100644 --- a/src/xrt/ipc/server/ipc_server_process.c +++ b/src/xrt/ipc/server/ipc_server_process.c @@ -1004,7 +1004,7 @@ ipc_server_get_system_properties(struct ipc_server *vs, struct xrt_system_proper #ifndef XRT_OS_ANDROID int -ipc_server_main(int argc, char **argv) +ipc_server_main(int argc, char **argv, const struct ipc_server_main_info *ismi) { // Get log level first. enum u_logging_level log_level = debug_get_log_option_ipc_log(); @@ -1019,17 +1019,12 @@ ipc_server_main(int argc, char **argv) timeBeginPeriod(1); #endif - struct u_debug_gui_info udgci = { - .window_title = "Monado! ✨⚡🔥", - .open = U_DEBUG_GUI_OPEN_AUTO, - }; - /* * Need to create early before any vars are added. Not created in * init_all since that function is shared with Android and the debug * GUI isn't supported on Android. */ - u_debug_gui_create(&udgci, &s->debug_gui); + u_debug_gui_create(&ismi->udgci, &s->debug_gui); int ret = init_all(s, log_level); diff --git a/src/xrt/targets/sdl_test/sdl_main.c b/src/xrt/targets/sdl_test/sdl_main.c index 02c385a61..a7f8b2a36 100644 --- a/src/xrt/targets/sdl_test/sdl_main.c +++ b/src/xrt/targets/sdl_test/sdl_main.c @@ -1,4 +1,5 @@ // Copyright 2019-2022, Collabora, Ltd. +// Copyright 2024-2025, NVIDIA CORPORATION. // SPDX-License-Identifier: BSL-1.0 /*! * @file @@ -8,6 +9,8 @@ #include "util/u_trace_marker.h" +#include "server/ipc_server_interface.h" + #include #include @@ -15,14 +18,19 @@ // Insert the on load constructor to init trace marker. U_TRACE_TARGET_SETUP(U_TRACE_WHICH_SERVICE) -int -ipc_server_main(int argc, char *argv[]); - int main(int argc, char *argv[]) { u_trace_marker_init(); - return ipc_server_main(argc, argv); + struct ipc_server_main_info ismi = { + .udgci = + { + .window_title = "Monado SDL Test Debug GUI", + .open = U_DEBUG_GUI_OPEN_AUTO, + }, + }; + + return ipc_server_main(argc, argv, &ismi); } diff --git a/src/xrt/targets/service/main.c b/src/xrt/targets/service/main.c index f014f4f58..02b157b3e 100644 --- a/src/xrt/targets/service/main.c +++ b/src/xrt/targets/service/main.c @@ -1,4 +1,5 @@ // Copyright 2020, Collabora, Ltd. +// Copyright 2024-2025, NVIDIA CORPORATION. // SPDX-License-Identifier: BSL-1.0 /*! * @file @@ -37,7 +38,15 @@ main(int argc, char *argv[]) u_trace_marker_init(); u_metrics_init(); - int ret = ipc_server_main(argc, argv); + struct ipc_server_main_info ismi = { + .udgci = + { + .window_title = "Monado! ✨⚡🔥", + .open = U_DEBUG_GUI_OPEN_AUTO, + }, + }; + + int ret = ipc_server_main(argc, argv, &ismi); u_metrics_close();