Mercurial > hg > xemacs-beta
comparison src/device.h @ 272:c5d627a313b1 r21-0b34
Import from CVS: tag r21-0b34
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:28:48 +0200 |
parents | b2472a1930f2 |
children | 8626e4521993 |
comparison
equal
deleted
inserted
replaced
271:c7b7086b0a39 | 272:c5d627a313b1 |
---|---|
220 #define DEVICEP(x) RECORDP (x, device) | 220 #define DEVICEP(x) RECORDP (x, device) |
221 #define GC_DEVICEP(x) GC_RECORDP (x, device) | 221 #define GC_DEVICEP(x) GC_RECORDP (x, device) |
222 #define CHECK_DEVICE(x) CHECK_RECORD (x, device) | 222 #define CHECK_DEVICE(x) CHECK_RECORD (x, device) |
223 #define CONCHECK_DEVICE(x) CONCHECK_RECORD (x, device) | 223 #define CONCHECK_DEVICE(x) CONCHECK_RECORD (x, device) |
224 | 224 |
225 #define CHECK_LIVE_DEVICE(x) \ | 225 #define CHECK_LIVE_DEVICE(x) do { \ |
226 do { CHECK_DEVICE (x); \ | 226 CHECK_DEVICE (x); \ |
227 if (! DEVICEP (x) \ | 227 if (! DEVICE_LIVE_P (XDEVICE (x))) \ |
228 || ! DEVICE_LIVE_P (XDEVICE (x))) \ | 228 dead_wrong_type_argument (Qdevice_live_p, (x)); \ |
229 dead_wrong_type_argument (Qdevice_live_p, (x)); } while (0) | 229 } while (0) |
230 #define CONCHECK_LIVE_DEVICE(x) \ | 230 #define CONCHECK_LIVE_DEVICE(x) do { \ |
231 do { CONCHECK_DEVICE (x); \ | 231 CONCHECK_DEVICE (x); \ |
232 if (! DEVICEP (x) \ | 232 if (! DEVICE_LIVE_P (XDEVICE (x))) \ |
233 || ! DEVICE_LIVE_P (XDEVICE (x))) \ | 233 x = wrong_type_argument (Qdevice_live_p, (x)); \ |
234 x = wrong_type_argument (Qdevice_live_p, (x)); } while (0) | 234 } while (0) |
235 | 235 |
236 #define DEVICE_TYPE_P(d, type) EQ (DEVICE_TYPE (d), Q##type) | 236 #define DEVICE_TYPE_P(d, type) EQ (DEVICE_TYPE (d), Q##type) |
237 | 237 |
238 #ifdef ERROR_CHECK_TYPECHECK | 238 #ifdef ERROR_CHECK_TYPECHECK |
239 MAC_DECLARE_EXTERN (struct device *, MTdevice_data) | 239 INLINE struct device * |
240 error_check_device_type (struct device *d, Lisp_Object sym); | |
241 INLINE struct device * | |
242 error_check_device_type (struct device *d, Lisp_Object sym) | |
243 { | |
244 assert (EQ (DEVICE_TYPE (d), sym)); | |
245 return d; | |
246 } | |
240 # define DEVICE_TYPE_DATA(d, type) \ | 247 # define DEVICE_TYPE_DATA(d, type) \ |
241 MAC_BEGIN \ | 248 ((struct type##_device *) (error_check_device_type (d, Q##type))->device_data) |
242 MAC_DECLARE (struct device *, MTdevice_data, d) \ | |
243 assert (DEVICE_TYPE_P (MTdevice_data, type)) \ | |
244 MAC_SEP \ | |
245 (struct type##_device *) MTdevice_data->device_data \ | |
246 MAC_END | |
247 #else | 249 #else |
248 # define DEVICE_TYPE_DATA(d, type) \ | 250 # define DEVICE_TYPE_DATA(d, type) \ |
249 ((struct type##_device *) (d)->device_data) | 251 ((struct type##_device *) (d)->device_data) |
250 #endif | 252 #endif |
251 | 253 |
286 #define CHECK_STREAM_DEVICE(z) CHECK_DEVICE_TYPE (z, stream) | 288 #define CHECK_STREAM_DEVICE(z) CHECK_DEVICE_TYPE (z, stream) |
287 #define CONCHECK_STREAM_DEVICE(z) CONCHECK_DEVICE_TYPE (z, stream) | 289 #define CONCHECK_STREAM_DEVICE(z) CONCHECK_DEVICE_TYPE (z, stream) |
288 | 290 |
289 #define DEVICE_WIN_P(dev) CONSOLE_TYPESYM_WIN_P (DEVICE_TYPE (dev)) | 291 #define DEVICE_WIN_P(dev) CONSOLE_TYPESYM_WIN_P (DEVICE_TYPE (dev)) |
290 | 292 |
291 extern Lisp_Object Vdefault_device; | 293 EXFUN (Fdevice_console, 1); |
292 extern Lisp_Object Qdelete_device; | 294 EXFUN (Fdevice_name, 1); |
293 extern Lisp_Object Qdevice_live_p; | 295 EXFUN (Fmake_device, 3); |
294 | 296 EXFUN (Fselected_device, 1); |
297 | |
298 extern Lisp_Object Qcreate_device_hook, Qdelete_device_hook, Qgrayscale; | |
299 extern Lisp_Object Qinit_post_tty_win, Qmono, Vdefault_x_device; | |
295 extern Lisp_Object Vdevice_class_list; | 300 extern Lisp_Object Vdevice_class_list; |
296 | 301 |
297 extern Lisp_Object Qcolor, Qgrayscale, Qmono; | |
298 int valid_device_class_p (Lisp_Object class); | 302 int valid_device_class_p (Lisp_Object class); |
299 | 303 |
300 #define DEVICE_LIVE_P(d) (!EQ (DEVICE_TYPE (d), Qdead)) | 304 #define DEVICE_LIVE_P(d) (!EQ (DEVICE_TYPE (d), Qdead)) |
301 | 305 |
302 #define DEVICE_REDISPLAY_INFO(d) ((d)->redisplay_info) | 306 #define DEVICE_REDISPLAY_INFO(d) ((d)->redisplay_info) |
319 #define DEVICE_OUTFD(d) ((d)->outfd) | 323 #define DEVICE_OUTFD(d) ((d)->outfd) |
320 #define DEVICE_OLD_FCNTL_OWNER(d) ((d)->old_fcntl_owner) | 324 #define DEVICE_OLD_FCNTL_OWNER(d) ((d)->old_fcntl_owner) |
321 #define DEVICE_ON_CONSOLE_P(d) ((d)->on_console_p) | 325 #define DEVICE_ON_CONSOLE_P(d) ((d)->on_console_p) |
322 #define DEVICE_CONNECTED_TO_NAS_P(d) ((d)->connected_to_nas_p) | 326 #define DEVICE_CONNECTED_TO_NAS_P(d) ((d)->connected_to_nas_p) |
323 | 327 |
324 #define LOCK_DEVICE(d) do { (d)->locked = 1; } while (0) | 328 #define LOCK_DEVICE(d) ((void) ((d)->locked = 1)) |
325 #define UNLOCK_DEVICE(d) do { (d)->locked = 0; } while (0) | 329 #define UNLOCK_DEVICE(d) ((void) ((d)->locked = 0)) |
326 | 330 |
327 #define INVALIDATE_DEVICE_PIXEL_TO_GLYPH_CACHE(d) \ | 331 #define INVALIDATE_DEVICE_PIXEL_TO_GLYPH_CACHE(d) \ |
328 (d)->pixel_to_glyph_cache.valid = 0 | 332 ((void) ((d)->pixel_to_glyph_cache.valid = 0)) |
329 | 333 |
330 #define INVALIDATE_PIXEL_TO_GLYPH_CACHE do { \ | 334 #define INVALIDATE_PIXEL_TO_GLYPH_CACHE do { \ |
331 Lisp_Object _devcons_, _concons_; \ | 335 Lisp_Object _devcons_, _concons_; \ |
332 DEVICE_LOOP_NO_BREAK (_devcons_, _concons_) \ | 336 DEVICE_LOOP_NO_BREAK (_devcons_, _concons_) \ |
333 INVALIDATE_DEVICE_PIXEL_TO_GLYPH_CACHE (XDEVICE (XCONS (_devcons_)->car));\ | 337 INVALIDATE_DEVICE_PIXEL_TO_GLYPH_CACHE (XDEVICE (XCAR (_devcons_)));\ |
334 } while (0) | 338 } while (0) |
335 | 339 |
336 #define MARK_DEVICE_FACES_CHANGED(d) do { \ | 340 #define MARK_DEVICE_FACES_CHANGED(d) \ |
337 faces_changed = 1; \ | 341 ((void) (faces_changed = (d)->faces_changed = 1)) |
338 (d)->faces_changed = 1; } while (0) | 342 |
339 | 343 #define MARK_DEVICE_GLYPHS_CHANGED(d) \ |
340 #define MARK_DEVICE_GLYPHS_CHANGED(d) do { \ | 344 ((void) (glyphs_changed = (d)->glyphs_changed = 1)) |
341 glyphs_changed = 1; \ | 345 |
342 (d)->glyphs_changed = 1; } while (0) | 346 #define MARK_DEVICE_TOOLBARS_CHANGED(d) \ |
343 | 347 ((void) (toolbar_changed = (d)->toolbar_changed = 1)) |
344 #define MARK_DEVICE_TOOLBARS_CHANGED(d) do { \ | 348 |
345 toolbar_changed = 1; \ | 349 #define MARK_DEVICE_SIZE_CHANGED(d) \ |
346 (d)->toolbar_changed = 1; } while (0) | 350 ((void) (size_changed = (d)->size_changed = 1)) |
347 | 351 |
348 #define MARK_DEVICE_SIZE_CHANGED(d) do { \ | 352 #define MARK_DEVICE_FRAMES_FACES_CHANGED(d) do { \ |
349 size_changed = 1; \ | 353 struct device *mdffc_d = (d); \ |
350 (d)->size_changed = 1; } while (0) | 354 Lisp_Object frmcons; \ |
351 | 355 DEVICE_FRAME_LOOP (frmcons, mdffc_d) \ |
352 #define MARK_DEVICE_FRAMES_FACES_CHANGED(d) do { \ | 356 XFRAME (XCAR (frmcons))->faces_changed = 1; \ |
353 Lisp_Object frmcons; \ | 357 MARK_DEVICE_FACES_CHANGED (mdffc_d); \ |
354 DEVICE_FRAME_LOOP (frmcons, d) \ | 358 } while (0) |
355 XFRAME (XCONS (frmcons)->car)->faces_changed = 1; \ | 359 |
356 MARK_DEVICE_FACES_CHANGED (d); } while (0) | 360 #define MARK_DEVICE_FRAME_CHANGED(d) \ |
357 | 361 ((void) (frame_changed = (d)->frame_changed = 1)) |
358 #define MARK_DEVICE_FRAME_CHANGED(d) do { \ | 362 |
359 frame_changed = 1; \ | 363 #define MARK_DEVICE_WINDOWS_CHANGED(d) \ |
360 (d)->frame_changed = 1; } while (0) | 364 ((void) (windows_changed = (d)->windows_changed = 1)) |
361 | 365 |
362 #define MARK_DEVICE_WINDOWS_CHANGED(d) do { \ | 366 #define MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED(d) \ |
363 windows_changed = 1; \ | 367 ((void) (windows_structure_changed = (d)->windows_structure_changed = 1)) |
364 (d)->windows_changed = 1; } while (0) | |
365 | |
366 #define MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED(d) do { \ | |
367 windows_structure_changed = 1; \ | |
368 (d)->windows_structure_changed = 1; } while (0) | |
369 | 368 |
370 /* This turns out to be used heavily so we make it a macro to make it | 369 /* This turns out to be used heavily so we make it a macro to make it |
371 inline. Also, the majority of the time the object will turn out to | 370 inline. Also, the majority of the time the object will turn out to |
372 be a window so we move it from being checked last to being checked | 371 be a window so we move it from being checked last to being checked |
373 first. */ | 372 first. */ |
388 CONSOLE_DEVICE_LOOP (devcons, con) \ | 387 CONSOLE_DEVICE_LOOP (devcons, con) \ |
389 DEVICE_FRAME_LOOP (frmcons, XDEVICE (XCAR (devcons))) | 388 DEVICE_FRAME_LOOP (frmcons, XDEVICE (XCAR (devcons))) |
390 | 389 |
391 void select_device_1 (Lisp_Object); | 390 void select_device_1 (Lisp_Object); |
392 struct device *decode_device (Lisp_Object); | 391 struct device *decode_device (Lisp_Object); |
393 Lisp_Object make_device (struct device *d); | |
394 void handle_asynch_device_change (void); | 392 void handle_asynch_device_change (void); |
395 void call_critical_lisp_code (struct device *d, Lisp_Object function, | 393 void call_critical_lisp_code (struct device *d, Lisp_Object function, |
396 Lisp_Object object); | 394 Lisp_Object object); |
397 void delete_device_internal (struct device *d, int force, | 395 void delete_device_internal (struct device *d, int force, |
398 int called_from_delete_console, | 396 int called_from_delete_console, |