Quellcode durchsuchen

st/wgl: Allow to create pbuffers bigger than the desktop.

We use a hidden window for pbuffer contexts, but Windows limits window
sizes to the desktop size by default. This means that creating a big
pbuffer on a small resolution single monitor would truncate the pbuffer
size to the desktop.

This change overrides the windows maximum size, allow to create windows
arbitrarily large.
tags/mesa-7.11-rc1
José Fonseca vor 14 Jahren
Ursprung
Commit
9fbd708932
1 geänderte Dateien mit 25 neuen und 1 gelöschten Zeilen
  1. 25
    1
      src/gallium/state_trackers/wgl/stw_ext_pbuffer.c

+ 25
- 1
src/gallium/state_trackers/wgl/stw_ext_pbuffer.c Datei anzeigen

@@ -40,6 +40,30 @@
#include "stw_framebuffer.h"


#define LARGE_WINDOW_SIZE 60000


static LRESULT CALLBACK
WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
MINMAXINFO *pMMI;
switch (uMsg) {
case WM_GETMINMAXINFO:
// Allow to create a window bigger than the desktop
pMMI = (MINMAXINFO *)lParam;
pMMI->ptMaxSize.x = LARGE_WINDOW_SIZE;
pMMI->ptMaxSize.y = LARGE_WINDOW_SIZE;
pMMI->ptMaxTrackSize.x = LARGE_WINDOW_SIZE;
pMMI->ptMaxTrackSize.y = LARGE_WINDOW_SIZE;
break;
default:
break;
}

return DefWindowProc(hWnd, uMsg, wParam, lParam);
}


HPBUFFERARB WINAPI
wglCreatePbufferARB(HDC _hDC,
int iPixelFormat,
@@ -109,7 +133,7 @@ wglCreatePbufferARB(HDC _hDC,
wc.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.lpfnWndProc = DefWindowProc;
wc.lpfnWndProc = WndProc;
wc.lpszClassName = "wglpbuffer";
wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wc);

Laden…
Abbrechen
Speichern