Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3545 hidnplayr 1
 
2
3
 
4
5
 
6
7
 
8
        push    esp     ; reserve stack place
9
        invoke  getaddrinfo, first, 0, 0, esp
10
        pop     esi
11
; test for error
12
        test    eax, eax
13
        jnz     exit
14
15
 
16
        mov     eax, [eax+sockaddr_in.sin_addr]
17
        mov     [sockaddr1.ip], eax
18
19
 
20
;                [server_ip]:1, [server_ip+1]:1, \
21
;                [server_ip+2]:1, [server_ip+3]:1, \
22
;                [server_port]:2
23
24
 
25
        mov     [socketnum], eax
26
        mcall   connect, [socketnum], sockaddr1, 18
27
28
 
29
30
 
31
        jne     no_rfb
32
        DEBUGF  1, 'received: %s\n', receive_buffer
33
        mcall   send, [socketnum], handshake, 12, 0
34
        DEBUGF  1, 'Sending handshake: protocol version\n'
35
36
 
37
38
 
39
        je      invalid_security
40
41
 
42
        je      no_security
43
44
 
45
        je      vnc_security
46
47
 
48
49
 
50
        mov     byte[mode], 1
51
        call    red_logon
52
53
 
54
        mcall   send, [socketnum], shared, 1, 0
55
        DEBUGF  1, 'Sending handshake: shared session?\n'
56
57
 
58
59
 
60
61
 
62
                [receive_buffer+framebuffer.pixelformat.bpp]:1, \
63
                [receive_buffer+framebuffer.pixelformat.depth]:1, \
64
                [receive_buffer+framebuffer.pixelformat.big_endian]:1, \
65
                [receive_buffer+framebuffer.pixelformat.true_color]:1
66
67
 
68
        mov     dword [fbur.width], eax
69
        bswap   eax
70
        mov     dword [screen], eax
71
72
 
73
        DEBUGF  1, 'Sending pixel format\n'
74
        call    read_data
75
76
 
77
;    DEBUGF 1,'Sending encoding info\n'
78
;    call    read_data
79
80
 
81
82
 
83
        mov     [fbur.inc], 2
84
        mcall   send, [socketnum], fbur, 10, 0
85
86
 
87
        mcall   23, 100
88
89
 
90
91
 
92
;        jb      mainloop
93
94
 
95
96
 
97
        je      framebufferupdate
98
99
 
100
        je      setcolourmapentries
101
102
 
103
        je      bell
104
105
 
106
        je      servercuttext
107
108
 
109
110
 
111
framebufferupdate:
112
113
 
114
        xchg    al, ah
115
        mov     di, ax
116
        DEBUGF  1, 'Framebufferupdate: %u frames\n', di
117
        mov     esi, receive_buffer+4
118
        jmp     rectangle_loop
119
120
 
121
 
122
        call    drawbuffer
123
124
 
125
        test    di, di
126
        jz      request_rfb
127
128
 
129
130
 
131
        bswap   edx
132
        mov     ebx, edx
133
        shr     edx, 16
134
        mov     [frame.x], dx
135
        mov     [frame.y], bx
136
        add     esi, 4
137
        mov     ecx, [esi]
138
        bswap   ecx
139
        mov     eax, ecx
140
        shr     ecx, 16
141
        mov     [frame.width], cx
142
        mov     [frame.height], ax
143
        add     esi, 4
144
        mov     eax, [esi]
145
        add     esi, 4
146
147
 
148
        sub     ebx, receive_buffer+12
149
        DEBUGF  1, 'frame: width=%u height=%u x=%u y=%u offset:%u encoding:',\
150
                [frame.width]:2, [frame.height]:2, [frame.x]:2, [frame.y]:2, ebx
151
152
 
153
        je      encoding_raw
154
;        cmp     eax, 1
155
;        je      encoding_copyrect
156
        cmp     eax, 2
157
        je      encoding_RRE
158
        cmp     eax, 5
159
        je      encoding_hextile
160
        cmp     eax, 16
161
        je      encoding_ZRLE
162
163
 
164
        sub     ebx, receive_buffer+8
165
        DEBUGF  1, '\nunknown encoding: %u (offset %u)\n', eax, ebx
166
        jmp     bell
167
        jmp     thread_loop
168
169
 
170
171
 
172
173
 
174
175
 
176
177
 
178
179
 
180
181
 
182
183
 
184
185
 
186
187
 
188
189
 
190
191
 
192
193
 
194
 
195
        mcall   55, 55, , , beep
196
197
 
198
199
 
200
 
201
202
 
203
204
 
205
206
 
207
 
208
209
 
210
  .loop:
211
        mcall   23, 100*TIMEOUT
212
        mcall   recv, [socketnum], [datapointer], 4096, 0
213
        cmp     eax, -1
214
        je      .done
215
216
 
217
218
 
219
        je      .loop
220
221
 
222
        mov     eax, [datapointer]
223
        sub     eax, receive_buffer
224
        ret
225
226
 
227
 
228
 
229
230
 
231
        mcall   recv, [socketnum], receive_buffer, 4096, 0
232
        cmp     eax, -1
233
        je      wait_for_data
234
        test    eax, eax
235
        jz      wait_for_data
236
237
 
238