xserver

xserver with xephyr scale patch
git clone https://git.neptards.moe/u3shit/xserver.git
Log | Files | Refs | README | LICENSE

winblock.c (3150B)


      1 /*
      2  *Copyright (C) 2001-2004 Harold L Hunt II All Rights Reserved.
      3  *
      4  *Permission is hereby granted, free of charge, to any person obtaining
      5  * a copy of this software and associated documentation files (the
      6  *"Software"), to deal in the Software without restriction, including
      7  *without limitation the rights to use, copy, modify, merge, publish,
      8  *distribute, sublicense, and/or sell copies of the Software, and to
      9  *permit persons to whom the Software is furnished to do so, subject to
     10  *the following conditions:
     11  *
     12  *The above copyright notice and this permission notice shall be
     13  *included in all copies or substantial portions of the Software.
     14  *
     15  *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     16  *EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     17  *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     18  *NONINFRINGEMENT. IN NO EVENT SHALL HAROLD L HUNT II BE LIABLE FOR
     19  *ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
     20  *CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
     21  *WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     22  *
     23  *Except as contained in this notice, the name of Harold L Hunt II
     24  *shall not be used in advertising or otherwise to promote the sale, use
     25  *or other dealings in this Software without prior written authorization
     26  *from Harold L Hunt II.
     27  *
     28  * Authors:	Harold L Hunt II
     29  */
     30 
     31 #ifdef HAVE_XWIN_CONFIG_H
     32 #include <xwin-config.h>
     33 #endif
     34 #include "win.h"
     35 #include "winmsg.h"
     36 
     37 /* See Porting Layer Definition - p. 6 */
     38 void
     39 winBlockHandler(ScreenPtr pScreen, void *pTimeout)
     40 {
     41     winScreenPriv(pScreen);
     42 
     43 #ifndef HAS_DEVWINDOWS
     44     struct timeval **tvp = pTimeout;
     45 
     46     if (*tvp != NULL) {
     47       if (GetQueueStatus(QS_ALLINPUT | QS_ALLPOSTMESSAGE) != 0) {
     48         /* If there are still messages to process on the Windows message
     49            queue, make sure select() just polls rather than blocking.
     50         */
     51         (*tvp)->tv_sec = 0;
     52         (*tvp)->tv_usec = 0;
     53       }
     54       else {
     55         /* Otherwise, lacking /dev/windows, we must wake up again in
     56            a reasonable time to check the Windows message queue. without
     57            noticeable delay.
     58          */
     59         (*tvp)->tv_sec = 0;
     60         (*tvp)->tv_usec = 100;
     61       }
     62     }
     63 #endif
     64 
     65     /* Signal threaded modules to begin */
     66     if (pScreenPriv != NULL && !pScreenPriv->fServerStarted) {
     67         int iReturn;
     68 
     69         winDebug("winBlockHandler - pthread_mutex_unlock()\n");
     70 
     71         /* Flag that modules are to be started */
     72         pScreenPriv->fServerStarted = TRUE;
     73 
     74         /* Unlock the mutex for threaded modules */
     75         iReturn = pthread_mutex_unlock(&pScreenPriv->pmServerStarted);
     76         if (iReturn != 0) {
     77             ErrorF("winBlockHandler - pthread_mutex_unlock () failed: %d\n",
     78                    iReturn);
     79         }
     80         else {
     81             winDebug("winBlockHandler - pthread_mutex_unlock () returned\n");
     82         }
     83     }
     84 
     85   /*
     86     At least one X client has asked to suspend the screensaver, so
     87     reset Windows' display idle timer
     88   */
     89 #ifdef SCREENSAVER
     90   if (screenSaverSuspended)
     91     SetThreadExecutionState(ES_DISPLAY_REQUIRED);
     92 #endif
     93 }