PatchworkOS
Loading...
Searching...
No Matches
cmd.h
Go to the documentation of this file.
1
#ifndef PATCHWORK_CMD_H
2
#define PATCHWORK_CMD_H 1
3
4
#include "
event.h
"
5
#include "
pixel.h
"
6
#include "
point.h
"
7
#include "
rect.h
"
8
#include "
surface.h
"
9
10
#include <
stdint.h
>
11
#include <
sys/io.h
>
12
#include <
sys/proc.h
>
13
14
#if defined(__cplusplus)
15
extern
"C"
16
{
17
#endif
18
19
// Note: Commands will only let you access a surface owned by the client the command is called by unless that command
20
// has a "bool isGlobal" member and that member is true.
21
22
typedef
enum
23
{
24
CMD_SCREEN_INFO
,
25
CMD_SURFACE_NEW
,
26
CMD_SURFACE_FREE
,
27
CMD_SURFACE_MOVE
,
28
CMD_SURFACE_TIMER_SET
,
29
CMD_SURFACE_INVALIDATE
,
30
CMD_SURFACE_FOCUS_SET
,
31
CMD_SURFACE_VISIBLE_SET
,
32
CMD_SURFACE_REPORT
,
33
CMD_SUBSCRIBE
,
34
CMD_UNSUBSCRIBE
,
35
CMD_TYPE_AMOUNT
,
36
}
cmd_type_t
;
37
38
#define CMD_MAGIC 0xDEADC0DE
39
40
typedef
struct
cmd_header
41
{
42
uint32_t
magic
;
43
cmd_type_t
type
;
44
uint64_t
size
;
45
}
cmd_header_t
;
46
47
typedef
struct
48
{
49
cmd_header_t
header
;
50
uint64_t
index
;
51
}
cmd_screen_info_t
;
52
53
typedef
struct
54
{
55
cmd_header_t
header
;
56
surface_type_t
type
;
57
rect_t
rect
;
58
char
name[
MAX_NAME
];
59
}
cmd_surface_new_t
;
60
61
typedef
struct
62
{
63
cmd_header_t
header
;
64
surface_id_t
target
;
65
}
cmd_surface_free_t
;
66
67
typedef
struct
68
{
69
cmd_header_t
header
;
70
surface_id_t
target
;
71
rect_t
rect
;
72
}
cmd_surface_move_t
;
73
74
typedef
enum
75
{
76
TIMER_NONE
= 0,
77
TIMER_REPEAT
= 1 << 0
78
}
timer_flags_t
;
79
80
typedef
struct
81
{
82
cmd_header_t
header
;
83
surface_id_t
target
;
84
timer_flags_t
flags
;
85
clock_t
timeout
;
86
}
cmd_surface_timer_set_t
;
87
88
typedef
struct
89
{
90
cmd_header_t
header
;
91
surface_id_t
target
;
92
rect_t
invalidRect
;
93
}
cmd_surface_invalidate_t
;
94
95
typedef
struct
96
{
97
cmd_header_t
header
;
98
bool
isGlobal
;
99
surface_id_t
target
;
100
}
cmd_surface_focus_set_t
;
101
102
typedef
struct
103
{
104
cmd_header_t
header
;
105
bool
isGlobal
;
106
surface_id_t
target
;
107
bool
isVisible
;
108
}
cmd_surface_visible_set_t
;
109
110
typedef
struct
111
{
112
cmd_header_t
header
;
113
bool
isGlobal
;
114
surface_id_t
target
;
115
}
cmd_surface_report_t
;
116
117
typedef
struct
118
{
119
cmd_header_t
header
;
120
event_type_t
event
;
121
}
cmd_subscribe_t
;
122
123
typedef
struct
124
{
125
cmd_header_t
header
;
126
event_type_t
event
;
127
}
cmd_unsubscribe_t
;
128
129
#define CMD_BUFFER_MAX_DATA (0x1000)
130
131
#define CMD_BUFFER_FOR_EACH(buffer, cmd) \
132
for (uint8_t *_ptr = (buffer)->data, *_end = (uint8_t*)((uint64_t)(buffer) + (buffer)->size); _ptr < _end; \
133
_ptr += ((cmd_header_t*)_ptr)->size) \
134
for (cmd = (cmd_header_t*)_ptr; cmd; cmd = NULL)
135
136
typedef
struct
cmd_buffer
137
{
138
uint64_t
amount
;
139
uint64_t
size
;
// The entire used size of the cmd_buffer.
140
uint8_t
data
[
CMD_BUFFER_MAX_DATA
];
141
}
cmd_buffer_t
;
142
143
#if defined(__cplusplus)
144
}
145
#endif
146
147
#endif
MAX_NAME
#define MAX_NAME
Maximum length of names.
Definition
MAX_NAME.h:11
cmd_type_t
cmd_type_t
Definition
cmd.h:23
CMD_SUBSCRIBE
@ CMD_SUBSCRIBE
Definition
cmd.h:33
CMD_UNSUBSCRIBE
@ CMD_UNSUBSCRIBE
Definition
cmd.h:34
CMD_SURFACE_TIMER_SET
@ CMD_SURFACE_TIMER_SET
Definition
cmd.h:28
CMD_SURFACE_MOVE
@ CMD_SURFACE_MOVE
Definition
cmd.h:27
CMD_SURFACE_NEW
@ CMD_SURFACE_NEW
Definition
cmd.h:25
CMD_SURFACE_REPORT
@ CMD_SURFACE_REPORT
Definition
cmd.h:32
CMD_SURFACE_VISIBLE_SET
@ CMD_SURFACE_VISIBLE_SET
Definition
cmd.h:31
CMD_SURFACE_FREE
@ CMD_SURFACE_FREE
Definition
cmd.h:26
CMD_SURFACE_FOCUS_SET
@ CMD_SURFACE_FOCUS_SET
Definition
cmd.h:30
CMD_SURFACE_INVALIDATE
@ CMD_SURFACE_INVALIDATE
Definition
cmd.h:29
CMD_TYPE_AMOUNT
@ CMD_TYPE_AMOUNT
Definition
cmd.h:35
CMD_SCREEN_INFO
@ CMD_SCREEN_INFO
Definition
cmd.h:24
timer_flags_t
timer_flags_t
Definition
cmd.h:75
TIMER_NONE
@ TIMER_NONE
Definition
cmd.h:76
TIMER_REPEAT
@ TIMER_REPEAT
Definition
cmd.h:77
CMD_BUFFER_MAX_DATA
#define CMD_BUFFER_MAX_DATA
Definition
cmd.h:129
data
static fd_t data
Definition
dwm.c:21
event.h
event_type_t
uint16_t event_type_t
Event type.
Definition
event.h:72
surface_type_t
surface_type_t
Surface types.
Definition
surface.h:33
surface_id_t
uint64_t surface_id_t
Definition
surface.h:53
clock_t
__UINT64_TYPE__ clock_t
A nanosecond time.
Definition
clock_t.h:13
io.h
pixel.h
point.h
proc.h
rect.h
surface.h
stdint.h
uint32_t
__UINT32_TYPE__ uint32_t
Definition
stdint.h:15
uint64_t
__UINT64_TYPE__ uint64_t
Definition
stdint.h:17
uint8_t
__UINT8_TYPE__ uint8_t
Definition
stdint.h:11
cmd_buffer_t
Definition
cmd.h:137
cmd_buffer_t::amount
uint64_t amount
Definition
cmd.h:138
cmd_buffer_t::size
uint64_t size
Definition
cmd.h:139
cmd_header_t
Definition
cmd.h:41
cmd_header_t::magic
uint32_t magic
Definition
cmd.h:42
cmd_header_t::type
cmd_type_t type
Definition
cmd.h:43
cmd_header_t::size
uint64_t size
Definition
cmd.h:44
cmd_screen_info_t
Definition
cmd.h:48
cmd_screen_info_t::index
uint64_t index
Definition
cmd.h:50
cmd_screen_info_t::header
cmd_header_t header
Definition
cmd.h:49
cmd_subscribe_t
Definition
cmd.h:118
cmd_subscribe_t::event
event_type_t event
Definition
cmd.h:120
cmd_subscribe_t::header
cmd_header_t header
Definition
cmd.h:119
cmd_surface_focus_set_t
Definition
cmd.h:96
cmd_surface_focus_set_t::isGlobal
bool isGlobal
Definition
cmd.h:98
cmd_surface_focus_set_t::target
surface_id_t target
Definition
cmd.h:99
cmd_surface_focus_set_t::header
cmd_header_t header
Definition
cmd.h:97
cmd_surface_free_t
Definition
cmd.h:62
cmd_surface_free_t::header
cmd_header_t header
Definition
cmd.h:63
cmd_surface_free_t::target
surface_id_t target
Definition
cmd.h:64
cmd_surface_invalidate_t
Definition
cmd.h:89
cmd_surface_invalidate_t::target
surface_id_t target
Definition
cmd.h:91
cmd_surface_invalidate_t::header
cmd_header_t header
Definition
cmd.h:90
cmd_surface_invalidate_t::invalidRect
rect_t invalidRect
Definition
cmd.h:92
cmd_surface_move_t
Definition
cmd.h:68
cmd_surface_move_t::target
surface_id_t target
Definition
cmd.h:70
cmd_surface_move_t::header
cmd_header_t header
Definition
cmd.h:69
cmd_surface_move_t::rect
rect_t rect
Definition
cmd.h:71
cmd_surface_new_t
Definition
cmd.h:54
cmd_surface_new_t::header
cmd_header_t header
Definition
cmd.h:55
cmd_surface_new_t::rect
rect_t rect
Definition
cmd.h:57
cmd_surface_new_t::type
surface_type_t type
Definition
cmd.h:56
cmd_surface_report_t
Definition
cmd.h:111
cmd_surface_report_t::isGlobal
bool isGlobal
Definition
cmd.h:113
cmd_surface_report_t::header
cmd_header_t header
Definition
cmd.h:112
cmd_surface_report_t::target
surface_id_t target
Definition
cmd.h:114
cmd_surface_timer_set_t
Definition
cmd.h:81
cmd_surface_timer_set_t::timeout
clock_t timeout
Definition
cmd.h:85
cmd_surface_timer_set_t::header
cmd_header_t header
Definition
cmd.h:82
cmd_surface_timer_set_t::target
surface_id_t target
Definition
cmd.h:83
cmd_surface_timer_set_t::flags
timer_flags_t flags
Definition
cmd.h:84
cmd_surface_visible_set_t
Definition
cmd.h:103
cmd_surface_visible_set_t::isVisible
bool isVisible
Definition
cmd.h:107
cmd_surface_visible_set_t::header
cmd_header_t header
Definition
cmd.h:104
cmd_surface_visible_set_t::target
surface_id_t target
Definition
cmd.h:106
cmd_surface_visible_set_t::isGlobal
bool isGlobal
Definition
cmd.h:105
cmd_unsubscribe_t
Definition
cmd.h:124
cmd_unsubscribe_t::header
cmd_header_t header
Definition
cmd.h:125
cmd_unsubscribe_t::event
event_type_t event
Definition
cmd.h:126
rect_t
Definition
rect.h:13
include
libpatchwork
cmd.h
Generated by
1.9.8