~bennabiy/+junk/python-xlib

« back to all changes in this revision

Viewing changes to .pc/python3.patch/Xlib/ext/record.py

  • Committer: Package Import Robot
  • Author(s): Andrew Shadura, Ramkumar Ramachandra, Andrew Shadura
  • Date: 2015-08-13 08:14:19 UTC
  • mfrom: (6.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20150813081419-hdefinnghp2iydkx
Tags: 0.14+20091101-3
[ Ramkumar Ramachandra ]
* Remove useless debugging output (Closes: #565996)

[ Andrew Shadura ]
* Switch to 3.0 (quilt) format.
* Rename patches.
* Use debhelper 9 in its short form.
* Use pybuild.
* Bump Standards-Version.
* Don't build or install PostScript documentation and info files.
* Use system-provided texi2html instead of a shipped version
  (Closes: #795057).
* Update debian/copyright (Closes: #795057).
* Don't install Makefile or texi2html with the documentation.
* Set executable bit for examples.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Xlib.ext.record -- RECORD extension module
 
2
#
 
3
#    Copyright (C) 2006 Alex Badea <vamposdecampos@gmail.com>
 
4
#
 
5
#    This program is free software; you can redistribute it and/or modify
 
6
#    it under the terms of the GNU General Public License as published by
 
7
#    the Free Software Foundation; either version 2 of the License, or
 
8
#    (at your option) any later version.
 
9
#
 
10
#    This program is distributed in the hope that it will be useful,
 
11
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
#    GNU General Public License for more details.
 
14
#
 
15
#    You should have received a copy of the GNU General Public License
 
16
#    along with this program; if not, write to the Free Software
 
17
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
18
 
 
19
from Xlib import X
 
20
from Xlib.protocol import rq
 
21
 
 
22
extname = 'RECORD'
 
23
 
 
24
FromServerTime          = 0x01
 
25
FromClientTime          = 0x02
 
26
FromClientSequence      = 0x04
 
27
 
 
28
CurrentClients          = 1
 
29
FutureClients           = 2
 
30
AllClients              = 3
 
31
 
 
32
FromServer              = 0
 
33
FromClient              = 1
 
34
ClientStarted           = 2
 
35
ClientDied              = 3
 
36
StartOfData             = 4
 
37
EndOfData               = 5
 
38
 
 
39
Record_Range8 = rq.Struct(
 
40
        rq.Card8('first'),
 
41
        rq.Card8('last'))
 
42
Record_Range16 = rq.Struct(
 
43
        rq.Card16('first'),
 
44
        rq.Card16('last'))
 
45
Record_ExtRange = rq.Struct(
 
46
        rq.Object('major_range', Record_Range8),
 
47
        rq.Object('minor_range', Record_Range16))
 
48
Record_Range = rq.Struct(
 
49
        rq.Object('core_requests', Record_Range8),
 
50
        rq.Object('core_replies', Record_Range8),
 
51
        rq.Object('ext_requests', Record_ExtRange),
 
52
        rq.Object('ext_replies', Record_ExtRange),
 
53
        rq.Object('delivered_events', Record_Range8),
 
54
        rq.Object('device_events', Record_Range8),
 
55
        rq.Object('errors', Record_Range8),
 
56
        rq.Bool('client_started'),
 
57
        rq.Bool('client_died'))
 
58
 
 
59
Record_ClientInfo = rq.Struct(
 
60
        rq.Card32('client_resource'),
 
61
        rq.LengthOf('ranges', 4),
 
62
        rq.List('ranges', Record_Range))
 
63
 
 
64
 
 
65
class RawField(rq.ValueField):
 
66
    """A field with raw data, stored as a string"""
 
67
 
 
68
    structcode = None
 
69
 
 
70
    def pack_value(self, val):
 
71
        return val, len(val), None
 
72
 
 
73
    def parse_binary_value(self, data, display, length, format):
 
74
        return str(data), ''
 
75
 
 
76
 
 
77
class GetVersion(rq.ReplyRequest):
 
78
    _request = rq.Struct(
 
79
            rq.Card8('opcode'),
 
80
            rq.Opcode(0),
 
81
            rq.RequestLength(),
 
82
            rq.Card16('major_version'),
 
83
            rq.Card16('minor_version'))
 
84
    _reply = rq.Struct(
 
85
            rq.Pad(2),
 
86
            rq.Card16('sequence_number'),
 
87
            rq.ReplyLength(),
 
88
            rq.Card16('major_version'),
 
89
            rq.Card16('minor_version'),
 
90
            rq.Pad(20))
 
91
 
 
92
def get_version(self, major, minor):
 
93
    return GetVersion(
 
94
            display = self.display,
 
95
            opcode = self.display.get_extension_major(extname),
 
96
            major_version = major,
 
97
            minor_version = minor)
 
98
 
 
99
 
 
100
class CreateContext(rq.Request):
 
101
    _request = rq.Struct(
 
102
            rq.Card8('opcode'),
 
103
            rq.Opcode(1),
 
104
            rq.RequestLength(),
 
105
            rq.Card32('context'),           # Record_RC
 
106
            rq.Card8('element_header'),     # Record_Element_Header
 
107
            rq.Pad(3),
 
108
            rq.LengthOf('clients', 4),
 
109
            rq.LengthOf('ranges', 4),
 
110
            rq.List('clients', rq.Card32Obj),
 
111
            rq.List('ranges', Record_Range))
 
112
 
 
113
def create_context(self, datum_flags, clients, ranges):
 
114
    context = self.display.allocate_resource_id()
 
115
    CreateContext(
 
116
            display = self.display,
 
117
            opcode = self.display.get_extension_major(extname),
 
118
            context = context,
 
119
            element_header = datum_flags,
 
120
            clients = clients,
 
121
            ranges = ranges)
 
122
    return context
 
123
 
 
124
 
 
125
class RegisterClients(rq.Request):
 
126
    _request = rq.Struct(
 
127
            rq.Card8('opcode'),
 
128
            rq.Opcode(2),
 
129
            rq.RequestLength(),
 
130
            rq.Card32('context'),           # Record_RC
 
131
            rq.Card8('element_header'),     # Record_Element_Header
 
132
            rq.Pad(3),
 
133
            rq.LengthOf('clients', 4),
 
134
            rq.LengthOf('ranges', 4),
 
135
            rq.List('clients', rq.Card32Obj),
 
136
            rq.List('ranges', Record_Range))
 
137
 
 
138
def register_clients(self, context, element_header, clients, ranges):
 
139
    RegisterClients(
 
140
            display = self.display,
 
141
            opcode = self.display.get_extension_major(extname),
 
142
            context = context,
 
143
            element_header = element_header,
 
144
            clients = clients,
 
145
            ranges = ranges)
 
146
 
 
147
 
 
148
class UnregisterClients(rq.Request):
 
149
    _request = rq.Struct(
 
150
            rq.Card8('opcode'),
 
151
            rq.Opcode(3),
 
152
            rq.RequestLength(),
 
153
            rq.Card32('context'),           # Record_RC
 
154
            rq.LengthOf('clients', 4),
 
155
            rq.List('clients', rq.Card32Obj))
 
156
 
 
157
def unregister_clients(self, context, clients):
 
158
    UnregisterClients(
 
159
            display = self.display,
 
160
            opcode = self.display.get_extension_major(extname),
 
161
            context = context,
 
162
            clients = clients)
 
163
 
 
164
 
 
165
class GetContext(rq.ReplyRequest):
 
166
    _request = rq.Struct(
 
167
            rq.Card8('opcode'),
 
168
            rq.Opcode(4),
 
169
            rq.RequestLength(),
 
170
            rq.Card32('context'))           # Record_RC
 
171
    _reply = rq.Struct(
 
172
            rq.Pad(2),
 
173
            rq.Card16('sequence_number'),
 
174
            rq.ReplyLength(),
 
175
            rq.Card8('element_header'),     # Record_Element_Header
 
176
            rq.Pad(3),
 
177
            rq.LengthOf('client_info', 4),
 
178
            rq.Pad(16),
 
179
            rq.List('client_info', Record_ClientInfo))
 
180
 
 
181
def get_context(self, context):
 
182
    return GetContext(
 
183
            display = self.display,
 
184
            opcode = self.display.get_extension_major(extname),
 
185
            context = context)
 
186
 
 
187
 
 
188
class EnableContext(rq.ReplyRequest):
 
189
    _request = rq.Struct(
 
190
            rq.Card8('opcode'),
 
191
            rq.Opcode(5),
 
192
            rq.RequestLength(),
 
193
            rq.Card32('context'))           # Record_RC
 
194
    _reply = rq.Struct(
 
195
            rq.Pad(1),
 
196
            rq.Card8('category'),
 
197
            rq.Card16('sequence_number'),
 
198
            rq.ReplyLength(),
 
199
            rq.Card8('element_header'),     # Record_Element_Header
 
200
            rq.Bool('client_swapped'),
 
201
            rq.Pad(2),
 
202
            rq.Card32('id_base'),           # Record_XIDBase
 
203
            rq.Card32('server_time'),
 
204
            rq.Card32('recorded_sequence_number'),
 
205
            rq.Pad(8),
 
206
            RawField('data'))
 
207
 
 
208
    # This request receives multiple responses, so we need to keep
 
209
    # ourselves in the 'sent_requests' list in order to receive them all.
 
210
 
 
211
    # See the discussion on ListFonstsWithInfo in request.py
 
212
 
 
213
    def __init__(self, callback, *args, **keys):
 
214
        self._callback = callback
 
215
        apply(rq.ReplyRequest.__init__, (self, ) + args, keys)
 
216
 
 
217
    def _parse_response(self, data):
 
218
        r, d = self._reply.parse_binary(data, self._display)
 
219
        self._callback(r)
 
220
 
 
221
        if r.category == StartOfData:
 
222
            # Hack ourselves a sequence number, used by the code in
 
223
            # Xlib.protocol.display.Display.parse_request_response()
 
224
            self.sequence_number = r.sequence_number
 
225
 
 
226
        if r.category == EndOfData:
 
227
            self._response_lock.acquire()
 
228
            self._data = r
 
229
            self._response_lock.release()
 
230
        else:
 
231
            self._display.sent_requests.insert(0, self)
 
232
 
 
233
def enable_context(self, context, callback):
 
234
    EnableContext(
 
235
            callback = callback,
 
236
            display = self.display,
 
237
            opcode = self.display.get_extension_major(extname),
 
238
            context = context)
 
239
 
 
240
 
 
241
class DisableContext(rq.Request):
 
242
    _request = rq.Struct(
 
243
            rq.Card8('opcode'),
 
244
            rq.Opcode(6),
 
245
            rq.RequestLength(),
 
246
            rq.Card32('context'))           # Record_RC
 
247
 
 
248
def disable_context(self, context):
 
249
    DisableContext(
 
250
            display = self.display,
 
251
            opcode = self.display.get_extension_major(extname),
 
252
            context = context)
 
253
 
 
254
 
 
255
class FreeContext(rq.Request):
 
256
    _request = rq.Struct(
 
257
            rq.Card8('opcode'),
 
258
            rq.Opcode(7),
 
259
            rq.RequestLength(),
 
260
            rq.Card32('context'))           # Record_RC
 
261
 
 
262
def free_context(self, context):
 
263
    FreeContext(
 
264
            display = self.display,
 
265
            opcode = self.display.get_extension_major(extname),
 
266
            context = context)
 
267
    self.display.free_resource_id(context)
 
268
 
 
269
 
 
270
def init(disp, info):
 
271
    disp.extension_add_method('display', 'record_get_version', get_version)
 
272
    disp.extension_add_method('display', 'record_create_context', create_context)
 
273
    disp.extension_add_method('display', 'record_register_clients', register_clients)
 
274
    disp.extension_add_method('display', 'record_unregister_clients', unregister_clients)
 
275
    disp.extension_add_method('display', 'record_get_context', get_context)
 
276
    disp.extension_add_method('display', 'record_enable_context', enable_context)
 
277
    disp.extension_add_method('display', 'record_disable_context', disable_context)
 
278
    disp.extension_add_method('display', 'record_free_context', free_context)