Mercurial > hg > xemacs-beta
annotate src/vdb-win32.c @ 5044:e84a30b0e4a2
remove duplicative code in change_frame_size()
-------------------- ChangeLog entries follow: --------------------
src/ChangeLog addition:
2010-02-15 Ben Wing <ben@xemacs.org>
* frame.c (change_frame_size_1):
Simplify the logic in this function.
(1) Don't allow 0 as the value of height or width. The old code
that tried to allow this was totally broken, anyway, so obviously
this never happens any more.
(2) Don't duplicate the code in frame_conversion_internal() that
converts displayable pixel size to total pixel size -- just call
that function.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Mon, 15 Feb 2010 22:58:10 -0600 |
parents | f395ee7ad844 |
children | 308d34e9f07d |
rev | line source |
---|---|
3092 | 1 /* Virtual diry bit implementation for XEmacs. |
2 Copyright (C) 2005 Marcus Crestani. | |
3 | |
4 This file is part of XEmacs. | |
5 | |
6 XEmacs is free software; you can redistribute it and/or modify it | |
7 under the terms of the GNU General Public License as published by the | |
8 Free Software Foundation; either version 2, or (at your option) any | |
9 later version. | |
10 | |
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with XEmacs; see the file COPYING. If not, write to | |
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
19 Boston, MA 02111-1307, USA. */ | |
20 | |
21 /* Synched up with: Not in FSF. */ | |
22 | |
23 #include <config.h> | |
24 #include "lisp.h" | |
25 #include "gc.h" | |
26 #include "mc-alloc.h" | |
27 #include "vdb.h" | |
28 | |
29 #include "syswindows.h" | |
30 | |
31 | |
5042
f395ee7ad844
Fix some compile warnings, make vdb test code conditional on DEBUG_XEMACS
Ben Wing <ben@xemacs.org>
parents:
4827
diff
changeset
|
32 static LONG WINAPI |
3092 | 33 win32_fault_handler (LPEXCEPTION_POINTERS e) |
34 { | |
35 #define GET_FAULT_ADDRESS (void *) e->ExceptionRecord->ExceptionInformation[1] | |
36 if ((e->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION) | |
37 && (e->ExceptionRecord->ExceptionInformation[0] == 1) | |
38 && write_barrier_enabled | |
39 && (fault_on_protected_page (GET_FAULT_ADDRESS))) | |
40 { | |
41 vdb_designate_modified (GET_FAULT_ADDRESS); | |
42 unprotect_page_and_mark_dirty (GET_FAULT_ADDRESS); | |
43 return EXCEPTION_CONTINUE_EXECUTION; | |
44 } | |
45 else | |
46 return EXCEPTION_CONTINUE_SEARCH; | |
47 } | |
48 | |
4827
11daf37dae4d
more fixes to get a clean compile
Ben Wing <ben@xemacs.org>
parents:
3092
diff
changeset
|
49 typedef LONG (WINAPI *gcPVECTORED_EXCEPTION_HANDLER) (LPEXCEPTION_POINTERS e); |
3092 | 50 |
51 | |
52 void | |
53 vdb_install_signal_handler (void) | |
54 { | |
55 HMODULE hm; | |
56 PVOID (WINAPI *aveh) (ULONG, gcPVECTORED_EXCEPTION_HANDLER); | |
57 | |
58 /* See init_signals_very_early () in signal.c. */ | |
59 if (noninteractive && !initialized) | |
60 { | |
61 allow_incremental_gc = 0; | |
62 return; | |
63 } | |
64 | |
65 hm = qxeGetModuleHandle (XETEXT ("kernel32")); | |
66 if (hm) | |
67 aveh = (PVOID (WINAPI *) (ULONG, gcPVECTORED_EXCEPTION_HANDLER)) | |
68 GetProcAddress (hm, "AddVectoredExceptionHandler"); | |
69 else | |
70 { | |
71 fprintf (stderr, "\nFAILED TO LOAD LIBRARY\n"); | |
72 aveh = NULL; | |
73 } | |
74 if (aveh) | |
75 { | |
76 allow_incremental_gc = 1; | |
77 aveh (TRUE, win32_fault_handler); | |
78 } | |
79 else | |
80 { | |
81 fprintf (stderr, "\nFAILED TO INSTALL SIGNAL HANDLER\n"); | |
82 ABORT (); | |
83 } | |
84 } | |
85 | |
86 | |
87 void | |
88 vdb_protect (void *ptr, EMACS_INT len) | |
89 { | |
90 DWORD old; | |
91 VirtualProtect (ptr, len, PAGE_READONLY, &old); | |
92 } | |
93 | |
94 | |
95 void | |
96 vdb_unprotect (void *ptr, EMACS_INT len) | |
97 { | |
98 DWORD old; | |
99 VirtualProtect (ptr, len, PAGE_READWRITE, &old); | |
100 } |