Files
zdwm/docs/min_core_draft/wm_service.h
Zedhugh Chen 2fc4b33359 style: 更新 .clang-format 规则并重新格式化所有源文件
- 重构模块使用新的代码风格
- 老代码 (src 目录下的代码) 继续使用之前的代码风格

通过在需要不同代码风格的目录下放对应 .clang-format 配置文件实现
2026-04-14 01:52:53 +08:00

64 lines
1.4 KiB
C

#pragma once
#include <stdint.h>
#include "wm_state.h"
typedef enum wm_service_event_type_t {
WM_SERVICE_EVENT_NONE,
WM_SERVICE_EVENT_RUNTIME_STARTED,
WM_SERVICE_EVENT_RUNTIME_STOPPING,
WM_SERVICE_EVENT_WINDOW_METADATA_CHANGED,
WM_SERVICE_EVENT_RENDER_OUTPUT,
} wm_service_event_type_t;
typedef struct wm_service_event_t {
wm_service_event_type_t type;
union {
struct {
wm_window_id_t window_id;
uint32_t changed_fields;
} window_metadata_changed;
struct {
wm_output_id_t output_id;
} render_output;
} as;
} wm_service_event_t;
typedef struct wm_service_t wm_service_t;
typedef struct wm_service_api_t {
bool (*init)(wm_service_t *service);
void (*handle_event)(
wm_service_t *service,
const wm_service_event_t *event,
const wm_state_t *state
);
void (*shutdown)(wm_service_t *service);
} wm_service_api_t;
struct wm_service_t {
const wm_service_api_t *api;
void *impl;
};
typedef struct wm_service_registry_t {
wm_service_t *items;
size_t count;
size_t capacity;
} wm_service_registry_t;
void wm_service_registry_init(wm_service_registry_t *registry);
void wm_service_registry_shutdown(wm_service_registry_t *registry);
bool wm_service_registry_register(
wm_service_registry_t *registry,
wm_service_t service
);
void wm_service_registry_emit(
wm_service_registry_t *registry,
const wm_service_event_t *event,
const wm_state_t *state
);