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,16 +542,35 @@ 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 */ | ||||||
| 			  iHeight,		/* Bottom edge */ | 			  iHeight,		/* Bottom edge */ | ||||||
| 			  hFore,		/* Null or Parent window if transient*/ | 			  hFore,		/* Null or Parent window if transient*/ | ||||||
| 			  (HMENU) NULL,		/* No menu */ | 			  (HMENU) NULL,		/* No menu */ | ||||||
|  | @ -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