summaryrefslogtreecommitdiff
path: root/src/window_kms.c
blob: de3f24a6ebc1e7e61b5ac8772a28b1c6fda97bf3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include "window_kms.h"
#include "common.h"

f64 stl_scale_scroll(f64 v, f64 factor)
{
    return v / factor;
}

void stl_set_output_discovered_callback(void (*output_discovered)(void *, struct stl_monitor *), void *userdata)
{
    (void)output_discovered;
    (void)userdata;
}

bool stl_global_init(bool skip_graphics)
{
    (void)skip_graphics;
    return false;
}

s32 stl_global_get_poll_fd()
{
    al_assert_and_return(-1);
}

void stl_global_process_events()
{
    al_assert(false);
}

s32 stl_swallow_main(u32 argc, str *argv, s32 (*main)(u32, str *, void *), void *extra)
{
    return main(argc, argv, extra);
}

void stl_global_close(void)
{
}

static bool window_kms_create_window(struct stl_window *window, u32 width, u32 height, u32 flags,
    const char *monitor, const char *name, const char *app_id)
{
    struct stl_window_kms *kms = (struct stl_window_kms *)window;
    (void)kms;
    (void)monitor;
    (void)name;
    (void)app_id;
    (void)width;
    (void)height;
    (void)flags;
    return true;
}

static void window_kms_resize_internal(struct stl_window *window, u32 width, u32 height)
{
    (void)window;
    (void)width;
    (void)height;
}

static void window_kms_resize(struct stl_window *window, u32 width, u32 height)
{
    (void)window;
    (void)width;
    (void)height;
}

static void window_kms_toggle_fullscreen(struct stl_window *window)
{
    (void)window;
}

#ifdef STELA_POLL_INLINE
static bool window_kms_poll(struct stl_window *window, bool block)
{
    (void)window;
    (void)block;
    return true;
}

#ifdef STELA_PAUSE
static void window_kms_wake(struct stl_window *window)
{
    (void)window;
}
#endif
#endif

static void window_kms_process_events(struct stl_window *window)
{
    (void)window;
}

#ifdef STELA_PAUSE
static bool window_kms_should_refresh(struct stl_window *window)
{
    (void)window;
    return true;
}
#endif

static void window_kms_free(struct stl_window **window)
{
    (void)window;
}

#if defined STELA_API_OPENGL
static bool window_kms_gl_loader_load(void *window)
{
    (void)window;
    return true;
}

static bool window_kms_gl_make_current(void *window)
{
    (void)window;
    return true;
}

static void window_kms_gl_release_current(void *window)
{
    (void)window;
}

static void window_kms_gl_swap_buffers(void *window)
{
    struct stl_window_kms *kms = (struct stl_window_kms *)window;
    (void)kms;
}
#endif

struct stl_window *stl_window_create(void)
{
    struct stl_window_kms *kms = al_alloc_object(struct stl_window_kms);
    stl_window_init(&kms->w);
    kms->w.fullscreen = true;
    kms->w.create_window = window_kms_create_window;
    kms->w.resize_internal = window_kms_resize_internal;
    kms->w.resize = window_kms_resize;
    kms->w.toggle_fullscreen = window_kms_toggle_fullscreen;
#ifdef STELA_POLL_INLINE
    kms->w.poll = window_kms_poll;
#ifdef STELA_PAUSE
    kms->w.wake = window_kms_wake;
#endif
#endif
    kms->w.process_events = window_kms_process_events;
#ifdef STELA_PAUSE
    kms->w.should_refresh = window_kms_should_refresh;
#endif
    kms->w.free = window_kms_free;
#if defined STELA_API_OPENGL
    kms->w.get_gl_proc_address = NULL;
    kms->w.gl_loader_load = window_kms_gl_loader_load;
    kms->w.gl_make_current = window_kms_gl_make_current;
    kms->w.gl_release_current = window_kms_gl_release_current;
    kms->w.gl_swap_buffers = window_kms_gl_swap_buffers;
#endif
    return (struct stl_window *)kms;
}