projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
The pty backend won't _always_ be running under X, so it should be
[u/mdw/putty]
/
mac
/
mac.c
diff --git
a/mac/mac.c
b/mac/mac.c
index
f1f2bf3
..
a2e89f9
100644
(file)
--- a/
mac/mac.c
+++ b/
mac/mac.c
@@
-71,6
+71,7
@@
static int cold = 1;
static int borednow = FALSE;
struct mac_gestalts mac_gestalts;
UInt32 sleeptime;
static int borednow = FALSE;
struct mac_gestalts mac_gestalts;
UInt32 sleeptime;
+static long timing_next_time;
static void mac_startup(void);
static void mac_eventloop(void);
static void mac_startup(void);
static void mac_eventloop(void);
@@
-244,16
+245,31
@@
static void mac_startup(void) {
NewAEEventHandlerUPP(&mac_aevt_quit), 0, FALSE);
}
NewAEEventHandlerUPP(&mac_aevt_quit), 0, FALSE);
}
+void timer_change_notify(long next)
+{
+ timing_next_time = next;
+}
+
static void mac_eventloop(void) {
Boolean gotevent;
EventRecord event;
RgnHandle cursrgn;
static void mac_eventloop(void) {
Boolean gotevent;
EventRecord event;
RgnHandle cursrgn;
+ long next;
+ long ticksleft;
cursrgn = NewRgn();
sleeptime = 0;
for (;;) {
cursrgn = NewRgn();
sleeptime = 0;
for (;;) {
- mac_adjustcursor(cursrgn);
+ ticksleft=timing_next_time-GETTICKCOUNT();
+ if (sleeptime > ticksleft && ticksleft >=0)
+ sleeptime=ticksleft;
gotevent = WaitNextEvent(everyEvent, &event, sleeptime, cursrgn);
gotevent = WaitNextEvent(everyEvent, &event, sleeptime, cursrgn);
+ if (timing_next_time <= GETTICKCOUNT()) {
+ if (run_timers(timing_next_time, &next)) {
+ timer_change_notify(next);
+ }
+ }
+
/*
* XXX For now, limit sleep time to 1/10 s to work around
* wake-before-sleep race in MacTCP code.
/*
* XXX For now, limit sleep time to 1/10 s to work around
* wake-before-sleep race in MacTCP code.
@@
-267,9
+283,8
@@
static void mac_eventloop(void) {
if (borednow)
cleanup_exit(0);
}
if (borednow)
cleanup_exit(0);
}
- sk_poll();
if (!gotevent)
if (!gotevent)
-
mac_pollterm
();
+
sk_poll
();
if (mac_gestalts.apprvers >= 0x100 && mac_frontwindow() != NULL)
IdleControls(mac_frontwindow());
}
if (mac_gestalts.apprvers >= 0x100 && mac_frontwindow() != NULL)
IdleControls(mac_frontwindow());
}
@@
-457,6
+472,9
@@
static void mac_menucommand(long result) {
case iOpen:
mac_opensession();
goto done;
case iOpen:
mac_opensession();
goto done;
+ case iChange:
+ mac_reconfig();
+ goto done;
case iClose:
mac_closewindow(window);
goto done;
case iClose:
mac_closewindow(window);
goto done;
@@
-552,6
+570,7
@@
static void mac_adjustmenus(void) {
if (window != NULL && mac_wininfo(window)->adjustmenus != NULL)
(*mac_wininfo(window)->adjustmenus)(window);
else {
if (window != NULL && mac_wininfo(window)->adjustmenus != NULL)
(*mac_wininfo(window)->adjustmenus)(window);
else {
+ DisableItem(menu, iChange);
DisableItem(menu, iSave);
DisableItem(menu, iSaveAs);
DisableItem(menu, iDuplicate);
DisableItem(menu, iSave);
DisableItem(menu, iSaveAs);
DisableItem(menu, iDuplicate);