e:/XFree86 for RH 8.0/XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/common/xf86PM.c File Reference

Go to the source code of this file.

Functions

char * eventName (pmEvent event)
void suspend (pmEvent event, Bool undo)
void resume (pmEvent event, Bool undo)
void DoApmEvent (pmEvent event, Bool undo)
void xf86HandlePMEvents (int fd, pointer data)

Variables

int(* xf86PMGetEventFromOs )(int fd, pmEvent *events, int num)=NULL
pmWait(* xf86PMConfirmEventToOs )(int fd, pmEvent event)=NULL
Bool suspended = FALSE


Function Documentation

char* eventName pmEvent  event  )  [static]
 

Definition at line 15 of file xf86PM.c.

References event, XF86_APM_CAPABILITY_CHANGED, XF86_APM_CRITICAL_RESUME, XF86_APM_CRITICAL_SUSPEND, XF86_APM_LOW_BATTERY, XF86_APM_NORMAL_RESUME, XF86_APM_POWER_STATUS_CHANGE, XF86_APM_STANDBY_FAILED, XF86_APM_STANDBY_RESUME, XF86_APM_SUSPEND_FAILED, XF86_APM_SYS_STANDBY, XF86_APM_SYS_SUSPEND, XF86_APM_UPDATE_TIME, XF86_APM_USER_STANDBY, and XF86_APM_USER_SUSPEND.

Referenced by xf86HandlePMEvents().

00016 { 00017 switch(event) { 00018 case XF86_APM_SYS_STANDBY: return ("System Standby Request"); 00019 case XF86_APM_SYS_SUSPEND: return ("System Suspend Request"); 00020 case XF86_APM_CRITICAL_SUSPEND: return ("Critical Suspend"); 00021 case XF86_APM_USER_STANDBY: return ("User System Standby Request"); 00022 case XF86_APM_USER_SUSPEND: return ("User System Suspend Request"); 00023 case XF86_APM_STANDBY_RESUME: return ("System Standby Resume"); 00024 case XF86_APM_NORMAL_RESUME: return ("Normal Resume System"); 00025 case XF86_APM_CRITICAL_RESUME: return ("Critical Resume System"); 00026 case XF86_APM_LOW_BATTERY: return ("Battery Low"); 00027 case XF86_APM_POWER_STATUS_CHANGE: return ("Power Status Change"); 00028 case XF86_APM_UPDATE_TIME: return ("Update Time"); 00029 case XF86_APM_CAPABILITY_CHANGED: return ("Capability Changed"); 00030 case XF86_APM_STANDBY_FAILED: return ("Standby Request Failed"); 00031 case XF86_APM_SUSPEND_FAILED: return ("Suspend Request Failed"); 00032 default: return ("Unknown Event"); 00033 } 00034 }

void suspend pmEvent  event,
Bool  undo
[static]
 

Definition at line 37 of file xf86PM.c.

References _LocalDeviceRec::dev, DisableDevice(), _ScrnInfoRec::EnableDisableFBAccess, event, i, _ScrnInfoRec::LeaveVT, _LocalDeviceRec::next, xf86InfoRec::pKeyboard, _ScrnInfoRec::PMEvent, SETUP, _ScrnInfoRec::vtSema, xf86AccessLeave(), xf86AccessLeaveState(), xf86EnableAccess(), xf86EnterServerState(), xf86Info, xf86InputDevs, xf86NumScreens, and xf86Screens.

Referenced by DoApmEvent().

00038 { 00039 int i; 00040 InputInfoPtr pInfo; 00041 00042 for (i = 0; i < xf86NumScreens; i++) { 00043 xf86EnableAccess(xf86Screens[i]); 00044 if (xf86Screens[i]->EnableDisableFBAccess) 00045 (*xf86Screens[i]->EnableDisableFBAccess) (i, FALSE); 00046 } 00047 #if !defined(__EMX__) 00048 DisableDevice((DeviceIntPtr)xf86Info.pKeyboard); 00049 pInfo = xf86InputDevs; 00050 while (pInfo) { 00051 DisableDevice(pInfo->dev); 00052 pInfo = pInfo->next; 00053 } 00054 #endif 00055 xf86EnterServerState(SETUP); 00056 for (i = 0; i < xf86NumScreens; i++) { 00057 xf86EnableAccess(xf86Screens[i]); 00058 if (xf86Screens[i]->PMEvent) 00059 xf86Screens[i]->PMEvent(i,event,undo); 00060 else { 00061 xf86Screens[i]->LeaveVT(i, 0); 00062 xf86Screens[i]->vtSema = FALSE; 00063 } 00064 } 00065 xf86AccessLeave(); 00066 xf86AccessLeaveState(); 00067 }

void resume pmEvent  event,
Bool  undo
[static]
 

Definition at line 70 of file xf86PM.c.

References _LocalDeviceRec::dev, EnableDevice(), _ScrnInfoRec::EnableDisableFBAccess, _ScrnInfoRec::EnterVT, event, i, _LocalDeviceRec::next, OPERATING, xf86InfoRec::pKeyboard, _ScrnInfoRec::PMEvent, SaveScreens(), SETUP, _ScrnInfoRec::vtSema, xf86AccessEnter(), xf86EnableAccess(), xf86EnterServerState(), xf86Info, xf86InputDevs, xf86NumScreens, and xf86Screens.

Referenced by DoApmEvent().

00071 { 00072 int i; 00073 InputInfoPtr pInfo; 00074 00075 xf86AccessEnter(); 00076 xf86EnterServerState(SETUP); 00077 for (i = 0; i < xf86NumScreens; i++) { 00078 xf86EnableAccess(xf86Screens[i]); 00079 if (xf86Screens[i]->PMEvent) 00080 xf86Screens[i]->PMEvent(i,event,undo); 00081 else { 00082 xf86Screens[i]->vtSema = TRUE; 00083 xf86Screens[i]->EnterVT(i, 0); 00084 } 00085 } 00086 xf86EnterServerState(OPERATING); 00087 for (i = 0; i < xf86NumScreens; i++) { 00088 xf86EnableAccess(xf86Screens[i]); 00089 if (xf86Screens[i]->EnableDisableFBAccess) 00090 (*xf86Screens[i]->EnableDisableFBAccess) (i, TRUE); 00091 } 00092 SaveScreens(SCREEN_SAVER_FORCER, ScreenSaverReset); 00093 #if !defined(__EMX__) 00094 pInfo = xf86InputDevs; 00095 while (pInfo) { 00096 EnableDevice(pInfo->dev); 00097 pInfo = pInfo->next; 00098 } 00099 EnableDevice((DeviceIntPtr)xf86Info.pKeyboard); 00100 #endif 00101 }

void DoApmEvent pmEvent  event,
Bool  undo
[static]
 

Definition at line 104 of file xf86PM.c.

References event, i, OPERATING, _ScrnInfoRec::PMEvent, resume(), SETUP, suspend(), suspended, XF86_APM_CRITICAL_RESUME, XF86_APM_CRITICAL_SUSPEND, XF86_APM_NORMAL_RESUME, XF86_APM_STANDBY_RESUME, XF86_APM_SYS_STANDBY, XF86_APM_SYS_SUSPEND, XF86_APM_USER_STANDBY, XF86_APM_USER_SUSPEND, xf86EnableAccess(), xf86EnterServerState(), xf86NumScreens, and xf86Screens.

Referenced by xf86HandlePMEvents().

00105 { 00106 /* 00107 * we leave that as a global function for now. I don't know if 00108 * this might cause problems in the future. It is a global server 00109 * variable therefore it needs to be in a server info structure 00110 */ 00111 int i; 00112 00113 switch(event) { 00114 case XF86_APM_SYS_STANDBY: 00115 case XF86_APM_SYS_SUSPEND: 00116 case XF86_APM_CRITICAL_SUSPEND: /*do we want to delay a critical suspend?*/ 00117 case XF86_APM_USER_STANDBY: 00118 case XF86_APM_USER_SUSPEND: 00119 /* should we do this ? */ 00120 if (!undo && !suspended) { 00121 suspend(event,undo); 00122 suspended = TRUE; 00123 } else if (undo && suspended) { 00124 resume(event,undo); 00125 suspended = FALSE; 00126 } 00127 break; 00128 case XF86_APM_STANDBY_RESUME: 00129 case XF86_APM_NORMAL_RESUME: 00130 case XF86_APM_CRITICAL_RESUME: 00131 if (suspended) { 00132 resume(event,undo); 00133 suspended = FALSE; 00134 } 00135 break; 00136 default: 00137 xf86EnterServerState(SETUP); 00138 for (i = 0; i < xf86NumScreens; i++) { 00139 xf86EnableAccess(xf86Screens[i]); 00140 if (xf86Screens[i]->PMEvent) 00141 xf86Screens[i]->PMEvent(i,event,undo); 00142 } 00143 xf86EnterServerState(OPERATING); 00144 break; 00145 } 00146 }

void xf86HandlePMEvents int  fd,
pointer  data
 

Definition at line 151 of file xf86PM.c.

References Bool, DoApmEvent(), eventName(), events, fd, i, n, PM_CONTINUE, PM_FAILED, PM_WAIT, pmEvent, X_INFO, xf86MsgVerb(), xf86PMConfirmEventToOs, and xf86PMGetEventFromOs.

Referenced by xf86OSPMOpen().

00152 { 00153 pmEvent events[MAX_NO_EVENTS]; 00154 int i,n; 00155 Bool wait = FALSE; 00156 00157 if (!xf86PMGetEventFromOs) 00158 return; 00159 00160 if ((n = xf86PMGetEventFromOs(fd,events,MAX_NO_EVENTS))) { 00161 do { 00162 for (i = 0; i < n; i++) { 00163 xf86MsgVerb(X_INFO,3,"PM Event received: %s\n", 00164 eventName(events[i])); 00165 DoApmEvent(events[i],FALSE); 00166 switch (xf86PMConfirmEventToOs(fd,events[i])) { 00167 case PM_WAIT: 00168 wait = TRUE; 00169 break; 00170 case PM_CONTINUE: 00171 wait = FALSE; 00172 break; 00173 case PM_FAILED: 00174 DoApmEvent(events[i],TRUE); 00175 wait = FALSE; 00176 break; 00177 default: 00178 break; 00179 } 00180 } 00181 if (wait) 00182 n = xf86PMGetEventFromOs(fd,events,MAX_NO_EVENTS); 00183 else 00184 break; 00185 } while (1); 00186 } 00187 }


Variable Documentation

int(* xf86PMGetEventFromOs)(int fd, pmEvent *events, int num)=NULL
 

Definition at line 9 of file xf86PM.c.

Referenced by xf86HandlePMEvents(), and xf86OSPMOpen().

pmWait(* xf86PMConfirmEventToOs)(int fd, pmEvent event)=NULL
 

Definition at line 10 of file xf86PM.c.

Referenced by xf86HandlePMEvents(), and xf86OSPMOpen().

Bool suspended = FALSE [static]
 

Definition at line 12 of file xf86PM.c.

Referenced by DoApmEvent().


Generated on Tue May 11 01:53:18 2004 for XFree86 by doxygen 1.3.7