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
Block a user