stub.c revision 19316fa5e707a23324c91b47aebf8697362428b3
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/* Copyright (c) 2001, Stanford University
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * All rights reserved
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * See the file LICENSE.txt for information on redistributing this software.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync stub.spu->dispatch_table.GetIntegerv(GL_DRAW_BUFFER, &buffer);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync if ((NIL_RTTHREAD!=stub.hSyncThread) && (RTThreadNativeSelf()==RTThreadGetNative(stub.hSyncThread)))
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync crDebug("going to XOpenDisplay(%s)", pWindow->dpyName);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync crWarning("Failed to open display %s", pWindow->dpyName);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Returns -1 on error
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncGLint APIENTRY crCreateContext( const char *dpyName, GLint visBits )
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* XXX in Chromium 1.5 and earlier, the last parameter was UNDECIDED.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * That didn't seem right so it was changed to CHROMIUM. (Brian)
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync context = stubNewContext(dpyName, visBits, CHROMIUM, 0);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncvoid APIENTRY crMakeCurrent( GLint window, GLint context )
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync crHashtableSearch(stub.windowTable, (unsigned int) window);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync crWarning("Can't call crMakeCurrent with native GL context");
stubInit();
if (winInfo)
stubInit();
#ifdef WINDOWS
# ifdef CR_NEWWINTRACK
void APIENTRY stub_GetChromiumParametervCR( GLenum target, GLuint index, GLenum type, GLsizei count, GLvoid *values )
char **ret;
switch( target )
case GL_HEAD_SPU_NAME_CR:
return res;
#ifdef WINDOWS
int iret;
return GL_FALSE;
pt.x = 0;
pt.y = 0;
crDebug("Rgn[%d] = (%d, %d, %d, %d)", i, pRects[i].left, pRects[i].top, pRects[i].right, pRects[i].bottom);
if (lpRgnData)
crDebug("Dispatched WindowVisibleRegion (%i, cRects=%i)", pWindow->spuWindow, lpRgnData->rdh.nCount);
stub.spuDispatch.WindowVisibleRegion(pWindow->spuWindow, lpRgnData->rdh.nCount, (GLint*) lpRgnData->Buffer);
return GL_TRUE;
return GL_FALSE;
# ifndef CR_NEWWINTRACK
(void) key;
case WM_MOVING:
case WM_SIZING:
case WM_MOVE:
case WM_CREATE:
case WM_SIZE:
case WM_SHOWWINDOW:
case WM_ACTIVATEAPP:
case WM_PAINT:
case WM_NCPAINT:
case WM_NCACTIVATE:
case WM_ERASEBKGND:
case WM_MOVING:
case WM_SIZING:
case WM_MOVE:
case WM_ACTIVATEAPP:
case WM_NCPAINT:
case WM_NCACTIVATE:
case WM_ERASEBKGND:
case WM_CREATE:
case WM_SIZE:
case WM_SHOWWINDOW:
void stubInstallWindowMessageHook()
stub.hMessageHook = SetWindowsHookEx(WH_CALLWNDPROCRET, stubCBWindowMessageHookProc, 0, crThreadID());
vma=0;
vmi=0;
int cRects, i;
bool bNoUpdate = false;
return GL_FALSE;
* it seems there's no way to get even based updates for this. Or I've failed to find the appropriate extension.
#ifdef VBOX_TEST_MEGOO
bNoUpdate = true;
if (!bNoUpdate
|| (pWindow->pVisibleRegions && crMemcmp(pWindow->pVisibleRegions, pXRects, cRects * sizeof(XRectangle)))))
if (!pGLRects)
return GL_FALSE;
for (i=0; i<cRects; ++i)
//crDebug("Rect[%i]=(%i,%i,%i,%i)", i, pGLRects[4*i+0], pGLRects[4*i+1], pGLRects[4*i+2], pGLRects[4*i+3]);
return GL_TRUE;
return GL_FALSE;