Merge remote-tracking branch 'jturney/master'
This commit is contained in:
		
						commit
						61f87a75f2
					
				| 
						 | 
					@ -48,9 +48,7 @@ glapi_sources =					\
 | 
				
			||||||
	glthread.c				\
 | 
						glthread.c				\
 | 
				
			||||||
	glthread.h
 | 
						glthread.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
libglxdri_la_SOURCES = \
 | 
					libglxdri_la_SOURCES =
 | 
				
			||||||
        extension_string.c \
 | 
					 | 
				
			||||||
        extension_string.h
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
if DRI
 | 
					if DRI
 | 
				
			||||||
libglxdri_la_SOURCES += glxdri.c
 | 
					libglxdri_la_SOURCES += glxdri.c
 | 
				
			||||||
| 
						 | 
					@ -65,6 +63,8 @@ libglxdri_la_LIBADD = $(DLOPEN_LIBS)
 | 
				
			||||||
libglx_la_SOURCES = \
 | 
					libglx_la_SOURCES = \
 | 
				
			||||||
	$(indirect_sources) \
 | 
						$(indirect_sources) \
 | 
				
			||||||
	$(glapi_sources) \
 | 
						$(glapi_sources) \
 | 
				
			||||||
 | 
						extension_string.c \
 | 
				
			||||||
 | 
						extension_string.h \
 | 
				
			||||||
	indirect_util.c \
 | 
						indirect_util.c \
 | 
				
			||||||
	indirect_util.h \
 | 
						indirect_util.h \
 | 
				
			||||||
	indirect_program.c \
 | 
						indirect_program.c \
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -395,8 +395,15 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen)
 | 
				
			||||||
	    if (depth == pScreen->visuals[i].nplanes)
 | 
						    if (depth == pScreen->visuals[i].nplanes)
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						/* if it can't, fix up the fbconfig to not advertise window support */
 | 
				
			||||||
	if (i == pScreen->numVisuals)
 | 
						if (i == pScreen->numVisuals)
 | 
				
			||||||
 | 
						    config->drawableType &= ~(GLX_WINDOW_BIT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       /* fbconfig must support window drawables */
 | 
				
			||||||
 | 
						if (!(config->drawableType & GLX_WINDOW_BIT)) {
 | 
				
			||||||
 | 
						    config->visualID = 0;
 | 
				
			||||||
	    continue;
 | 
						    continue;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Create a new X visual for our FBconfig. */
 | 
						/* Create a new X visual for our FBconfig. */
 | 
				
			||||||
	visual = AddScreenVisuals(pScreen, 1, depth);
 | 
						visual = AddScreenVisuals(pScreen, 1, depth);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,7 +50,7 @@ BEGIN
 | 
				
			||||||
  LTEXT			BUILDERSTRING, IDC_STATIC, 36, 28, 220, 8
 | 
					  LTEXT			BUILDERSTRING, IDC_STATIC, 36, 28, 220, 8
 | 
				
			||||||
  LTEXT			"This software is licensed under the terms of the MIT/X11 License.", IDC_STATIC, 36, 48, 220, 20
 | 
					  LTEXT			"This software is licensed under the terms of the MIT/X11 License.", IDC_STATIC, 36, 48, 220, 20
 | 
				
			||||||
  CONTROL               __VENDORDWEBSUPPORT__, ID_ABOUT_WEBSITE, "Button",
 | 
					  CONTROL               __VENDORDWEBSUPPORT__, ID_ABOUT_WEBSITE, "Button",
 | 
				
			||||||
                        BS_OWNERDRAW | WS_TABSTOP, 36, 68, 68, 8
 | 
					                        BS_OWNERDRAW | WS_TABSTOP, 36, 68, 220, 8
 | 
				
			||||||
  DEFPUSHBUTTON		"&OK", IDOK, 105, 85, 50, 15
 | 
					  DEFPUSHBUTTON		"&OK", IDOK, 105, 85, 50, 15
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -115,7 +115,7 @@ winDrawURLWindow (LPARAM lParam)
 | 
				
			||||||
  /* Draw it */
 | 
					  /* Draw it */
 | 
				
			||||||
  SetBkMode (draw->hDC, OPAQUE);
 | 
					  SetBkMode (draw->hDC, OPAQUE);
 | 
				
			||||||
  SelectObject (draw->hDC, font);
 | 
					  SelectObject (draw->hDC, font);
 | 
				
			||||||
  DrawText (draw->hDC, str, strlen (str),&rect,DT_CENTER | DT_VCENTER);
 | 
					  DrawText (draw->hDC, str, strlen (str),&rect,DT_LEFT | DT_VCENTER);
 | 
				
			||||||
  /* Delete the created font, replace it with stock font */
 | 
					  /* Delete the created font, replace it with stock font */
 | 
				
			||||||
  DeleteObject (SelectObject (draw->hDC, GetStockObject (ANSI_VAR_FONT)));
 | 
					  DeleteObject (SelectObject (draw->hDC, GetStockObject (ANSI_VAR_FONT)));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -493,6 +493,8 @@ winCreateWindowsWindow (WindowPtr pWin)
 | 
				
			||||||
  winPrivScreenPtr	pScreenPriv = pWinPriv->pScreenPriv;
 | 
					  winPrivScreenPtr	pScreenPriv = pWinPriv->pScreenPriv;
 | 
				
			||||||
  WinXSizeHints         hints;
 | 
					  WinXSizeHints         hints;
 | 
				
			||||||
  WindowPtr		pDaddy;
 | 
					  WindowPtr		pDaddy;
 | 
				
			||||||
 | 
					  DWORD dwStyle, dwExStyle;
 | 
				
			||||||
 | 
					  RECT rc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  winInitMultiWindowClass();
 | 
					  winInitMultiWindowClass();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -517,6 +519,8 @@ winCreateWindowsWindow (WindowPtr pWin)
 | 
				
			||||||
        iY = CW_USEDEFAULT;
 | 
					        iY = CW_USEDEFAULT;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  winDebug("winCreateWindowsWindow - %dx%d @ %dx%d\n", iWidth, iHeight, iX, iY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (winMultiWindowGetTransientFor (pWin, &pDaddy))
 | 
					  if (winMultiWindowGetTransientFor (pWin, &pDaddy))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      if (pDaddy)
 | 
					      if (pDaddy)
 | 
				
			||||||
| 
						 | 
					@ -538,13 +542,32 @@ winCreateWindowsWindow (WindowPtr pWin)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* Create the window */
 | 
					  /* Make it WS_OVERLAPPED in create call since WS_POPUP doesn't support */
 | 
				
			||||||
  /* Make it OVERLAPPED in create call since WS_POPUP doesn't support */
 | 
					 | 
				
			||||||
  /* CW_USEDEFAULT, change back to popup after creation */
 | 
					  /* CW_USEDEFAULT, change back to popup after creation */
 | 
				
			||||||
  hWnd = CreateWindowExA (WS_EX_TOOLWINDOW,	/* Extended styles */
 | 
					  dwStyle = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
 | 
				
			||||||
 | 
					  dwExStyle = WS_EX_TOOLWINDOW;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /*
 | 
				
			||||||
 | 
					     Calculate the window coordinates containing the requested client area,
 | 
				
			||||||
 | 
					     being careful to preseve CW_USEDEFAULT
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					  rc.top = (iY != CW_USEDEFAULT) ? iY : 0;
 | 
				
			||||||
 | 
					  rc.left = (iX != CW_USEDEFAULT) ? iX : 0;
 | 
				
			||||||
 | 
					  rc.bottom = rc.top + iHeight;
 | 
				
			||||||
 | 
					  rc.right = rc.left + iWidth;
 | 
				
			||||||
 | 
					  AdjustWindowRectEx(&rc, dwStyle, FALSE, dwExStyle);
 | 
				
			||||||
 | 
					  if (iY != CW_USEDEFAULT) iY = rc.top;
 | 
				
			||||||
 | 
					  if (iX != CW_USEDEFAULT) iX = rc.left;
 | 
				
			||||||
 | 
					  iHeight = rc.bottom - rc.top;
 | 
				
			||||||
 | 
					  iWidth = rc.right - rc.left;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  winDebug("winCreateWindowsWindow - %dx%d @ %dx%d\n", iWidth, iHeight, iX, iY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Create the window */
 | 
				
			||||||
 | 
					  hWnd = CreateWindowExA (dwExStyle,		/* Extended styles */
 | 
				
			||||||
			  WINDOW_CLASS_X,	/* Class name */
 | 
								  WINDOW_CLASS_X,	/* Class name */
 | 
				
			||||||
			  WINDOW_TITLE_X,	/* Window name */
 | 
								  WINDOW_TITLE_X,	/* Window name */
 | 
				
			||||||
			  WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
 | 
								  dwStyle,		/* Styles */
 | 
				
			||||||
			  iX,			/* Horizontal position */
 | 
								  iX,			/* Horizontal position */
 | 
				
			||||||
			  iY,			/* Vertical position */
 | 
								  iY,			/* Vertical position */
 | 
				
			||||||
			  iWidth,		/* Right edge */
 | 
								  iWidth,		/* Right edge */
 | 
				
			||||||
| 
						 | 
					@ -569,6 +592,10 @@ winCreateWindowsWindow (WindowPtr pWin)
 | 
				
			||||||
  SetWindowLongPtr(hWnd, GWL_STYLE, WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
 | 
					  SetWindowLongPtr(hWnd, GWL_STYLE, WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
 | 
				
			||||||
  SetWindowPos (hWnd, 0, 0, 0, 0, 0,
 | 
					  SetWindowPos (hWnd, 0, 0, 0, 0, 0,
 | 
				
			||||||
		SWP_FRAMECHANGED | SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
 | 
							SWP_FRAMECHANGED | SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Adjust the X window to match the window placement we actually got... */
 | 
				
			||||||
 | 
					  winAdjustXWindow (pWin, hWnd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* Make sure it gets the proper system menu for a WS_POPUP, too */
 | 
					  /* Make sure it gets the proper system menu for a WS_POPUP, too */
 | 
				
			||||||
  GetSystemMenu (hWnd, TRUE);
 | 
					  GetSystemMenu (hWnd, TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1008,6 +1008,64 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
 | 
				
			||||||
      winAdjustXWindow (pWin, hwnd);
 | 
					      winAdjustXWindow (pWin, hwnd);
 | 
				
			||||||
      return 0; /* end of WM_SIZE handler */
 | 
					      return 0; /* end of WM_SIZE handler */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    case WM_STYLECHANGING:
 | 
				
			||||||
 | 
					      /*
 | 
				
			||||||
 | 
					        When the style changes, adjust the Windows window size so the client area remains the same size,
 | 
				
			||||||
 | 
					        and adjust the Windows window position so that the client area remains in the same place.
 | 
				
			||||||
 | 
					      */
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        RECT newWinRect;
 | 
				
			||||||
 | 
					        DWORD dwExStyle;
 | 
				
			||||||
 | 
					        DWORD dwStyle;
 | 
				
			||||||
 | 
					        DWORD newStyle = ((STYLESTRUCT *)lParam)->styleNew;
 | 
				
			||||||
 | 
					        WINDOWINFO wi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dwExStyle = GetWindowLongPtr (hwnd, GWL_EXSTYLE);
 | 
				
			||||||
 | 
					        dwStyle = GetWindowLongPtr (hwnd, GWL_STYLE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        winDebug("winTopLevelWindowProc - WM_STYLECHANGING from %08x %08x\n", dwStyle, dwExStyle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (wParam == GWL_EXSTYLE)
 | 
				
			||||||
 | 
					          dwExStyle = newStyle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (wParam == GWL_STYLE)
 | 
				
			||||||
 | 
					          dwStyle = newStyle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        winDebug("winTopLevelWindowProc - WM_STYLECHANGING to %08x %08x\n", dwStyle, dwExStyle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Get client rect in screen coordinates */
 | 
				
			||||||
 | 
					        wi.cbSize = sizeof(WINDOWINFO);
 | 
				
			||||||
 | 
					        GetWindowInfo(hwnd, &wi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        winDebug("winTopLevelWindowProc - WM_STYLECHANGING client area {%d, %d, %d, %d}, {%d x %d}\n", wi.rcClient.left, wi.rcClient.top, wi.rcClient.right, wi.rcClient.bottom, wi.rcClient.right - wi.rcClient.left, wi.rcClient.bottom - wi.rcClient.top);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        newWinRect = wi.rcClient;
 | 
				
			||||||
 | 
					        if (!AdjustWindowRectEx(&newWinRect, dwStyle, FALSE, dwExStyle))
 | 
				
			||||||
 | 
					          winDebug("winTopLevelWindowProc - WM_STYLECHANGING AdjustWindowRectEx failed\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        winDebug("winTopLevelWindowProc - WM_STYLECHANGING window area should be {%d, %d, %d, %d}, {%d x %d}\n", newWinRect.left, newWinRect.top, newWinRect.right, newWinRect.bottom, newWinRect.right - newWinRect.left, newWinRect.bottom - newWinRect.top);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /*
 | 
				
			||||||
 | 
					          Style change hasn't happened yet, so we can't adjust the window size yet, as the winAdjustXWindow()
 | 
				
			||||||
 | 
					          which WM_SIZE does will use the current (unchanged) style.  Instead make a note to change it when
 | 
				
			||||||
 | 
					          WM_STYLECHANGED is received...
 | 
				
			||||||
 | 
					        */
 | 
				
			||||||
 | 
					        pWinPriv->hDwp = BeginDeferWindowPos(1);
 | 
				
			||||||
 | 
					        pWinPriv->hDwp = DeferWindowPos(pWinPriv->hDwp, hwnd, NULL, newWinRect.left, newWinRect.top, newWinRect.right - newWinRect.left, newWinRect.bottom - newWinRect.top, SWP_NOACTIVATE | SWP_NOZORDER);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    case WM_STYLECHANGED:
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        if (pWinPriv->hDwp)
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            EndDeferWindowPos(pWinPriv->hDwp);
 | 
				
			||||||
 | 
					            pWinPriv->hDwp = NULL;
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        winDebug("winTopLevelWindowProc - WM_STYLECHANGED done\n");
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    case WM_MOUSEACTIVATE:
 | 
					    case WM_MOUSEACTIVATE:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /* Check if this window needs to be made active when clicked */
 | 
					      /* Check if this window needs to be made active when clicked */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,6 +79,7 @@ typedef struct
 | 
				
			||||||
  HWND			hWnd;
 | 
					  HWND			hWnd;
 | 
				
			||||||
  winPrivScreenPtr	pScreenPriv;
 | 
					  winPrivScreenPtr	pScreenPriv;
 | 
				
			||||||
  Bool			fXKilled;
 | 
					  Bool			fXKilled;
 | 
				
			||||||
 | 
					  HDWP                  hDwp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* Privates used by primary fb DirectDraw server */
 | 
					  /* Privates used by primary fb DirectDraw server */
 | 
				
			||||||
  LPDDSURFACEDESC	pddsdPrimary;
 | 
					  LPDDSURFACEDESC	pddsdPrimary;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue