Monado OpenXR Runtime
|
Common server side code. More...
#include "xrt/xrt_compiler.h"
#include "xrt/xrt_limits.h"
#include "xrt/xrt_space.h"
#include "xrt/xrt_system.h"
#include "os/os_threading.h"
#include "util/u_logging.h"
#include "shared/ipc_protocol.h"
#include "shared/ipc_message_channel.h"
#include <stdio.h>
Go to the source code of this file.
Data Structures | |
struct | ipc_swapchain_data |
Information about a single swapchain. More... | |
struct | ipc_client_state |
Holds the state for a single client. More... | |
struct | ipc_thread |
struct | ipc_device |
struct | ipc_server_mainloop |
Platform-specific mainloop object for the IPC server. More... | |
struct | ipc_server |
Main IPC object for the server. More... | |
Macros | |
#define | IPC_TRACE(d, ...) U_LOG_IFL_T(d->log_level, __VA_ARGS__) |
#define | IPC_DEBUG(d, ...) U_LOG_IFL_D(d->log_level, __VA_ARGS__) |
#define | IPC_INFO(d, ...) U_LOG_IFL_I(d->log_level, __VA_ARGS__) |
#define | IPC_WARN(d, ...) U_LOG_IFL_W(d->log_level, __VA_ARGS__) |
#define | IPC_ERROR(d, ...) U_LOG_IFL_E(d->log_level, __VA_ARGS__) |
#define | IPC_MAX_CLIENT_SEMAPHORES 8 |
#define | IPC_MAX_CLIENT_SWAPCHAINS (XRT_MAX_LAYERS * 2) |
#define | IPC_MAX_CLIENT_SPACES 128 |
#define | XRT_IPC_GOT_IMPL |
#define | XRT_IPC_GOT_IMPL |
#define | XRT_IPC_GOT_IMPL |
Enumerations | |
enum | ipc_thread_state { IPC_THREAD_READY , IPC_THREAD_STARTING , IPC_THREAD_RUNNING , IPC_THREAD_STOPPING } |
Functions | |
xrt_result_t | ipc_server_get_client_app_state (struct ipc_server *s, uint32_t client_id, struct ipc_app_state *out_ias) |
Get the current state of a client. More... | |
xrt_result_t | ipc_server_set_active_client (struct ipc_server *s, uint32_t client_id) |
Set the new active client. More... | |
xrt_result_t | ipc_server_toggle_io_client (struct ipc_server *s, uint32_t client_id) |
Toggle the io for this client. More... | |
void | ipc_server_activate_session (volatile struct ipc_client_state *ics) |
Called by client threads to set a session to active. More... | |
void | ipc_server_deactivate_session (volatile struct ipc_client_state *ics) |
Called by client threads to set a session to deactivate. More... | |
void | ipc_server_update_state (struct ipc_server *s) |
Called by client threads to recalculate active client. More... | |
void * | ipc_server_client_thread (void *_ics) |
Thread function for the client side dispatching. More... | |
void | ipc_server_client_destroy_session_and_compositor (volatile struct ipc_client_state *ics) |
This destroys the native compositor for this client and any extra objects created from it, like all of the swapchains. More... | |
xrt_result_t | ipc_server_get_system_properties (struct ipc_server *vs, struct xrt_system_properties *out_properties) |
static struct xrt_device * | get_xdev (volatile struct ipc_client_state *ics, uint32_t device_id) |
Get a xdev with the given device_id. More... | |
static struct ipc_device * | get_idev (volatile struct ipc_client_state *ics, uint32_t device_id) |
Get a idev with the given device_id. More... | |
Common server side code.
|
inlinestatic |
Get a idev with the given device_id.
References ipc_client_state::server.
|
inlinestatic |
Get a xdev with the given device_id.
References ipc_client_state::server, and ipc_device::xdev.
void ipc_server_client_destroy_session_and_compositor | ( | volatile struct ipc_client_state * | ics | ) |
This destroys the native compositor for this client and any extra objects created from it, like all of the swapchains.
References os_mutex::os_mutex_lock(), ipc_client_state::server, and ipc_client_state::swapchain_count.