You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
2.8 KiB
130 lines
2.8 KiB
/******************************Module*Header*******************************\
|
|
* Module Name: wglsrv.c
|
|
*
|
|
* Routines to support OpenGL client-server implementation on Windows NT.
|
|
*
|
|
* Created: 01-17-1995
|
|
* Author: Hock San Lee [hockl]
|
|
*
|
|
* Copyright (c) 1995 Microsoft Corporation
|
|
\**************************************************************************/
|
|
|
|
#include "precomp.h"
|
|
#pragma hdrstop
|
|
|
|
#include "wgldef.h"
|
|
|
|
#ifndef _CLIENTSIDE_
|
|
|
|
HANDLE __wglCreateContext(HDC hdc, HDC hdcSrvIn, LONG iLayerPlane)
|
|
{
|
|
HDC hdcSrv;
|
|
HANDLE hrcSrv = (HANDLE) 0;
|
|
|
|
// Get the server-side DC handle.
|
|
|
|
if (hdcSrvIn != NULL)
|
|
{
|
|
hdcSrv = hdcSrvIn;
|
|
}
|
|
else
|
|
{
|
|
hdcSrv = GdiConvertDC(hdc);
|
|
}
|
|
|
|
if (hdcSrv == (HDC) 0)
|
|
{
|
|
WARNING1("__wglCreateContext: unexpected bad hdc: 0x%lx\n", hdc);
|
|
return(hrcSrv);
|
|
}
|
|
|
|
BEGINMSG(MSG_WGLCREATECONTEXT,WGLCREATECONTEXT)
|
|
pmsg->hdc = hdcSrv;
|
|
hrcSrv = (HANDLE) CALLSERVER();
|
|
ENDMSG
|
|
MSGERROR:
|
|
return(hrcSrv);
|
|
}
|
|
|
|
BOOL __wglDeleteContext(HANDLE hrcSrv)
|
|
{
|
|
BOOL bRet = FALSE;
|
|
|
|
BEGINMSG(MSG_WGLDELETECONTEXT,WGLDELETECONTEXT)
|
|
pmsg->hrc = (HGLRC) hrcSrv;
|
|
bRet = CALLSERVER();
|
|
ENDMSG
|
|
MSGERROR:
|
|
return(bRet);
|
|
}
|
|
|
|
BOOL __wglMakeCurrent(HDC hdc, HANDLE hrcSrv, HDC hdcSrvIn)
|
|
{
|
|
HDC hdcSrv = (HDC) 0;
|
|
BOOL bRet = FALSE;
|
|
|
|
// Get the server-side DC handle.
|
|
|
|
if (hdc)
|
|
{
|
|
if (hdcSrvIn != NULL)
|
|
{
|
|
hdcSrv = hdcSrvIn;
|
|
}
|
|
else
|
|
{
|
|
hdcSrv = GdiConvertDC(hdc);
|
|
}
|
|
|
|
if (hdcSrv == (HDC) 0)
|
|
{
|
|
WARNING1("__wglMakeCurrent: unexpected bad hdc: 0x%lx\n", hdc);
|
|
return(bRet);
|
|
}
|
|
}
|
|
|
|
BEGINMSG(MSG_WGLMAKECURRENT,WGLMAKECURRENT)
|
|
pmsg->hdc = hdcSrv;
|
|
pmsg->hrc = hrcSrv;
|
|
bRet = CALLSERVER();
|
|
ENDMSG
|
|
MSGERROR:
|
|
return(bRet);
|
|
}
|
|
|
|
BOOL __wglShareLists(HANDLE hrcSrvShare, HANDLE hrcSrvSource)
|
|
{
|
|
BOOL bRet = FALSE;
|
|
|
|
BEGINMSG(MSG_WGLSHARELISTS, WGLSHARELISTS)
|
|
pmsg->hrcSource = hrcSrvSource;
|
|
pmsg->hrcShare = hrcSrvShare;
|
|
bRet = CALLSERVER();
|
|
ENDMSG
|
|
MSGERROR:
|
|
return(bRet);
|
|
}
|
|
|
|
BOOL __wglAttention()
|
|
{
|
|
BOOL bRet = FALSE;
|
|
|
|
// reset user's poll count so it counts this as output
|
|
// put it right next to BEGINMSG so that NtCurrentTeb() is optimized
|
|
|
|
RESETUSERPOLLCOUNT();
|
|
|
|
BEGINMSG(MSG_GLSBATTENTION, GLSBATTENTION)
|
|
bRet = CALLSERVER();
|
|
ENDMSG
|
|
MSGERROR:
|
|
return(bRet);
|
|
}
|
|
|
|
BOOL __wglCopyContext(HANDLE hrcSrvSrc, HANDLE hrcSrvDest, UINT fuFlags)
|
|
{
|
|
// Server implementation doesn't support this call
|
|
return FALSE;
|
|
}
|
|
|
|
#endif // !_CLIENTSIDE_
|