mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-12-30 04:33:01 +00:00
Initial checkin; these sources should correspond to the GNO v2.0.4
version of this util.
This commit is contained in:
parent
fdf0d8d918
commit
63160f6291
4
sys/suspend/Makefile
Normal file
4
sys/suspend/Makefile
Normal file
@ -0,0 +1,4 @@
|
||||
suspda: suspda.c
|
||||
cmpl suspda.c keep=suspda
|
||||
chtyp -t \$B8 suspda
|
||||
cp suspda /procyon/system/desk.accs
|
81
sys/suspend/suspda.c
Normal file
81
sys/suspend/suspda.c
Normal file
@ -0,0 +1,81 @@
|
||||
#pragma nda daOpen daClose daAction daInit 0xFFFF 0 " Suspend...\\H***\xBDZ"
|
||||
|
||||
#include <signal.h>
|
||||
#include <sgtty.h>
|
||||
#include <types.h>
|
||||
#include <quickdraw.h>
|
||||
#include <event.h>
|
||||
#include <control.h>
|
||||
#include <window.h>
|
||||
#include <gno/gno.h>
|
||||
#include <misctool.h>
|
||||
|
||||
#pragma databank 1
|
||||
void stophandle(int sig, int code)
|
||||
{
|
||||
byte *bf = (byte *) 0xE100FFl;
|
||||
byte old;
|
||||
struct sgttyb sb;
|
||||
MouseRec oldmr;
|
||||
ClampRec cl1,cl2;
|
||||
unsigned int button;
|
||||
|
||||
/* Save off some important information */
|
||||
GrafOff();
|
||||
gtty(1,&sb);
|
||||
sb.sg_flags &= ~RAW;
|
||||
stty(1,&sb);
|
||||
|
||||
oldmr = ReadMouse();
|
||||
cl1 = GetAbsClamp();
|
||||
cl2 = GetMouseClamp();
|
||||
|
||||
old = *bf;
|
||||
*bf = 0;
|
||||
kill(getpid(),SIGSTOP);
|
||||
*bf = old;
|
||||
|
||||
/* Get things set back up for the desktop application again */
|
||||
SetMouse(oldmr.mouseMode);
|
||||
SetAbsClamp(cl1);
|
||||
ClampMouse(cl2);
|
||||
/*HomeMouse();*/
|
||||
|
||||
sb.sg_flags |= RAW;
|
||||
stty(1,&sb);
|
||||
button = Button(0);
|
||||
FakeMouse(1,0,oldmr.xPos,oldmr.yPos,button);
|
||||
GrafOn();
|
||||
}
|
||||
#pragma databank 0
|
||||
|
||||
#define NULL1 ((Pointer)NULL)
|
||||
|
||||
void *daOpen(void)
|
||||
{
|
||||
int oops;
|
||||
|
||||
if (!needsgno()) {
|
||||
oops = AlertWindow(0x0000,NULL1,
|
||||
(Ref)"22/Suspend requires that the GNO kernel be active./Cancel");
|
||||
return NULL;
|
||||
}
|
||||
signal(SIGTSTP,stophandle);
|
||||
/* This signal will not be delivered immediately because we're
|
||||
currently inside a tool call. Set up a handler to do the dirty
|
||||
work outside a tool call */
|
||||
kill(getpid(),SIGTSTP);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void daClose(void)
|
||||
{
|
||||
}
|
||||
|
||||
void daAction(long param, int foo)
|
||||
{
|
||||
}
|
||||
|
||||
void daInit(int foo)
|
||||
{
|
||||
}
|
Loading…
Reference in New Issue
Block a user