summaryrefslogtreecommitdiff
path: root/documentation/compositor.txt
blob: 4d8e70f6c5208fb466d94ac00633afbb4d2c1414 (plain) (blame)
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
compositors listen on the socket id "hilbert.compositor".

when a window is opened by an application, that window can only be referred to
on that stream. the opaque value given in the "window opened" message refers to
that window in future messages on that stream. it is guaranteed to be distinct
for different windows on the same stream, and in no way guaranteed to be
distinct for different windows on different streams. the window is bound
just to the stream, not to the application. if the stream where a window
was created is gifted to a new process, the new process has complete control
over the window, and the compositor does not need to be informed.

data types:

  color:
    opaque dword (result of encode color system call).
    from c++, use euler::syscall::encode_color in euler/syscall.hpp.

  color rectangle:
    multiple hilbert colors, top to bottom by row, left to right within row

  window:
    opaque word (given in "window opened" message after "open window" message)

messages from applications to compositor:

  open window:
    byte: 0x00
    dword: window width
    dword: window height

  update window region:
    byte: 0x01
    window: the window
    dword: start x
    dword: start y
    dword: width
    dword: height
    color rectangle: the data

messages from compositor to application:

  window opened:
    byte: 0x00
    window: the window