xserver

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

winpriv.c (2582B)


      1 /*
      2  * Export window information for the Windows-OpenGL GLX implementation.
      3  *
      4  * Authors: Alexander Gottwald
      5  */
      6 
      7 #ifdef HAVE_XWIN_CONFIG_H
      8 #include <xwin-config.h>
      9 #endif
     10 #include "win.h"
     11 #include "winpriv.h"
     12 #include "winwindow.h"
     13 
     14 void
     15  winCreateWindowsWindow(WindowPtr pWin);
     16 
     17 /**
     18  * Return size and handles of a window.
     19  * If pWin is NULL, then the information for the root window is requested.
     20  */
     21 HWND
     22 winGetWindowInfo(WindowPtr pWin)
     23 {
     24     winTrace("%s: pWin %p XID 0x%x\n", __FUNCTION__, pWin, (unsigned int)pWin->drawable.id);
     25 
     26     /* a real window was requested */
     27     if (pWin != NULL) {
     28         /* Get the window and screen privates */
     29         ScreenPtr pScreen = pWin->drawable.pScreen;
     30         winPrivScreenPtr pWinScreen = winGetScreenPriv(pScreen);
     31         winScreenInfoPtr pScreenInfo = NULL;
     32         HWND hwnd = NULL;
     33 
     34         if (pWinScreen == NULL) {
     35             ErrorF("winGetWindowInfo: screen has no privates\n");
     36             return NULL;
     37         }
     38 
     39         hwnd = pWinScreen->hwndScreen;
     40 
     41         pScreenInfo = pWinScreen->pScreenInfo;
     42         /* check for multiwindow mode */
     43         if (pScreenInfo->fMultiWindow) {
     44             winWindowPriv(pWin);
     45 
     46             if (pWinPriv == NULL) {
     47                 ErrorF("winGetWindowInfo: window has no privates\n");
     48                 return hwnd;
     49             }
     50 
     51             if (pWinPriv->hWnd == NULL) {
     52                 winCreateWindowsWindow(pWin);
     53                 winDebug("winGetWindowInfo: forcing window to exist\n");
     54             }
     55 
     56             if (pWinPriv->hWnd != NULL) {
     57                 /* copy window handle */
     58                 hwnd = pWinPriv->hWnd;
     59 
     60                 /* mark GLX active on that hwnd */
     61                 pWinPriv->fWglUsed = TRUE;
     62             }
     63 
     64             return hwnd;
     65         }
     66     }
     67     else {
     68         ScreenPtr pScreen = g_ScreenInfo[0].pScreen;
     69         winPrivScreenPtr pWinScreen = winGetScreenPriv(pScreen);
     70 
     71         if (pWinScreen == NULL) {
     72             ErrorF("winGetWindowInfo: screen has no privates\n");
     73             return NULL;
     74         }
     75 
     76         ErrorF("winGetWindowInfo: returning root window\n");
     77 
     78         return pWinScreen->hwndScreen;
     79     }
     80 
     81     return NULL;
     82 }
     83 
     84 Bool
     85 winCheckScreenAiglxIsSupported(ScreenPtr pScreen)
     86 {
     87     winPrivScreenPtr pWinScreen = winGetScreenPriv(pScreen);
     88     winScreenInfoPtr pScreenInfo = pWinScreen->pScreenInfo;
     89 
     90     if (pScreenInfo->fMultiWindow)
     91         return TRUE;
     92 
     93     return FALSE;
     94 }
     95 
     96 void
     97 winSetScreenAiglxIsActive(ScreenPtr pScreen)
     98 {
     99     winPrivScreenPtr pWinScreen = winGetScreenPriv(pScreen);
    100     pWinScreen->fNativeGlActive = TRUE;
    101 }