/* * Class: sun_java2d_d3d_D3DSurfaceData * Method: initOps * Signature: (III)V */ JNIEXPORT void JNICALL Java_sun_java2d_d3d_D3DSurfaceData_initOps (JNIEnv *env, jobject d3dsd, jint gdiScreen, jint width, jint height) { D3DPipelineManager *pMgr; D3DSDOps *d3dsdo = (D3DSDOps *)SurfaceData_InitOps(env, d3dsd, sizeof(D3DSDOps)); J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_initOps"); if (d3dsdo == NULL) { JNU_ThrowOutOfMemoryError(env, "creating native d3d ops"); return; } d3dsdo->sdOps.Lock = D3DSD_Lock; d3dsdo->sdOps.GetRasInfo = D3DSD_GetRasInfo; d3dsdo->sdOps.Unlock = D3DSD_Unlock; d3dsdo->sdOps.Dispose = D3DSD_Dispose; d3dsdo->xoff = 0; d3dsdo->yoff = 0; d3dsdo->width = width; d3dsdo->height = height; d3dsdo->pResource = NULL; d3dsdo->adapter = (pMgr = D3DPipelineManager::GetInstance()) == NULL ? D3DADAPTER_DEFAULT : pMgr->GetAdapterOrdinalForScreen(gdiScreen); }
/* * Class: sun_java2d_d3d_D3DSurfaceData * Method: initOps * Signature: (Ljava/lang/Object;)V */ JNIEXPORT void JNICALL Java_sun_java2d_d3d_D3DSurfaceData_initOps(JNIEnv *env, jobject wsd, jint depth, jint transparency) { J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_initOps"); Win32SDOps *wsdo = (Win32SDOps *)SurfaceData_InitOps(env, wsd, sizeof(D3DSDOps)); wsdo->sdOps.Lock = Win32OSSD_Lock; wsdo->sdOps.GetRasInfo = Win32OSSD_GetRasInfo; wsdo->sdOps.Unlock = Win32OSSD_Unlock; wsdo->sdOps.Dispose = Win32OSSD_Dispose; wsdo->RestoreSurface = D3DSD_RestoreSurface; wsdo->GetDC = Win32OSSD_GetDC; wsdo->ReleaseDC = Win32OSSD_ReleaseDC; wsdo->InvalidateSD = Win32OSSD_InvalidateSD; wsdo->invalid = JNI_FALSE; wsdo->lockType = WIN32SD_LOCK_UNLOCKED; wsdo->window = NULL; wsdo->backBufferCount = 0; wsdo->depth = depth; switch (depth) { case 8: wsdo->pixelStride = 1; break; case 15: //555 wsdo->pixelStride = 2; wsdo->pixelMasks[0] = 0x1f << 10; wsdo->pixelMasks[1] = 0x1f << 5; wsdo->pixelMasks[2] = 0x1f; break; case 16: //565 wsdo->pixelStride = 2; wsdo->pixelMasks[0] = 0x1f << 11; wsdo->pixelMasks[1] = 0x3f << 5; wsdo->pixelMasks[2] = 0x1f; break; case 24: wsdo->pixelStride = 3; break; case 32: //x888 wsdo->pixelStride = 4; wsdo->pixelMasks[0] = 0xff0000; wsdo->pixelMasks[1] = 0x00ff00; wsdo->pixelMasks[2] = 0x0000ff; break; } wsdo->surfaceLock = new CriticalSection(); wsdo->surfaceLost = FALSE; wsdo->transparency = transparency; wsdo->surfacePuntData.usingDDSystem = FALSE; wsdo->surfacePuntData.lpSurfaceSystem = NULL; wsdo->surfacePuntData.lpSurfaceVram = NULL; wsdo->surfacePuntData.numBltsSinceRead = 0; wsdo->surfacePuntData.pixelsReadSinceBlt = 0; wsdo->surfacePuntData.numBltsThreshold = 2; wsdo->gdiOpPending = FALSE; }
JNIEXPORT void JNICALL Java_sun_java2d_opengl_GLXSurfaceData_initOps(JNIEnv *env, jobject glxsd, jobject peer, jlong aData) { #ifndef HEADLESS GLXSDOps *glxsdo = (GLXSDOps *)malloc(sizeof(GLXSDOps)); if (glxsdo == NULL) { JNU_ThrowOutOfMemoryError(env, "creating native GLX ops"); return; } OGLSDOps *oglsdo = (OGLSDOps *)SurfaceData_InitOps(env, glxsd, sizeof(OGLSDOps)); if (oglsdo == NULL) { free(glxsdo); JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed."); return; } J2dTraceLn(J2D_TRACE_INFO, "GLXSurfaceData_initOps"); oglsdo->privOps = glxsdo; oglsdo->sdOps.Lock = OGLSD_Lock; oglsdo->sdOps.GetRasInfo = OGLSD_GetRasInfo; oglsdo->sdOps.Unlock = OGLSD_Unlock; oglsdo->sdOps.Dispose = OGLSD_Dispose; oglsdo->drawableType = OGLSD_UNDEFINED; oglsdo->activeBuffer = GL_FRONT; oglsdo->needsInit = JNI_TRUE; if (peer != NULL) { glxsdo->window = JNU_CallMethodByName(env, NULL, peer, "getContentWindow", "()J").j; } else { glxsdo->window = 0; } glxsdo->configData = (AwtGraphicsConfigDataPtr)jlong_to_ptr(aData); if (glxsdo->configData == NULL) { free(glxsdo); JNU_ThrowNullPointerException(env, "Native GraphicsConfig data block missing"); return; } if (glxsdo->configData->glxInfo == NULL) { free(glxsdo); JNU_ThrowNullPointerException(env, "GLXGraphicsConfigInfo missing"); return; } #endif /* HEADLESS */ }
JNIEXPORT void JNICALL Java_sun_java2d_opengl_WGLSurfaceData_initOps(JNIEnv *env, jobject wglsd, jlong pConfigInfo, jobject peer, jlong hwnd) { OGLSDOps *oglsdo = (OGLSDOps *)SurfaceData_InitOps(env, wglsd, sizeof(OGLSDOps)); WGLSDOps *wglsdo = (WGLSDOps *)malloc(sizeof(WGLSDOps)); J2dTraceLn(J2D_TRACE_INFO, "WGLSurfaceData_initOps"); if (wglsdo == NULL) { JNU_ThrowOutOfMemoryError(env, "creating native wgl ops"); return; } if (oglsdo == NULL) { free(wglsdo); JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed."); return; } oglsdo->privOps = wglsdo; oglsdo->sdOps.Lock = OGLSD_Lock; oglsdo->sdOps.GetRasInfo = OGLSD_GetRasInfo; oglsdo->sdOps.Unlock = OGLSD_Unlock; oglsdo->sdOps.Dispose = OGLSD_Dispose; oglsdo->drawableType = OGLSD_UNDEFINED; oglsdo->activeBuffer = GL_FRONT; oglsdo->needsInit = JNI_TRUE; if (peer != NULL) { RECT insets; AwtComponent_GetInsets(env, peer, &insets); oglsdo->xOffset = -insets.left; oglsdo->yOffset = -insets.bottom; } else { oglsdo->xOffset = 0; oglsdo->yOffset = 0; } wglsdo->window = (HWND)jlong_to_ptr(hwnd); wglsdo->configInfo = (WGLGraphicsConfigInfo *)jlong_to_ptr(pConfigInfo); if (wglsdo->configInfo == NULL) { free(wglsdo); JNU_ThrowNullPointerException(env, "Config info is null in initOps"); } }
JNIEXPORT void JNICALL Java_sun_java2d_opengl_GLXSurfaceData_initOps(JNIEnv *env, jobject glxsd, jobject peer, jlong aData) { #ifndef HEADLESS OGLSDOps *oglsdo = (OGLSDOps *)SurfaceData_InitOps(env, glxsd, sizeof(OGLSDOps)); GLXSDOps *glxsdo = (GLXSDOps *)malloc(sizeof(GLXSDOps)); J2dTraceLn(J2D_TRACE_INFO, "GLXSurfaceData_initOps"); if (glxsdo == NULL) { JNU_ThrowOutOfMemoryError(env, "creating native GLX ops"); return; } oglsdo->privOps = glxsdo; oglsdo->sdOps.Lock = OGLSD_Lock; oglsdo->sdOps.GetRasInfo = OGLSD_GetRasInfo; oglsdo->sdOps.Unlock = OGLSD_Unlock; oglsdo->sdOps.Dispose = OGLSD_Dispose; oglsdo->drawableType = OGLSD_UNDEFINED; oglsdo->activeBuffer = GL_FRONT; oglsdo->needsInit = JNI_TRUE; #ifdef XAWT if (peer != NULL) { glxsdo->window = JNU_CallMethodByName(env, NULL, peer, "getContentWindow", "()J").j; } else { glxsdo->window = 0; } #else if (peer != NULL) { struct ComponentData *cdata; cdata = (struct ComponentData *) JNU_GetLongFieldAsPtr(env, peer, mComponentPeerIDs.pData); if (cdata == NULL) { free(glxsdo); JNU_ThrowNullPointerException(env, "Component data missing"); return; } if (cdata->widget == NULL) { free(glxsdo); JNU_ThrowInternalError(env, "Widget is NULL in initOps"); return; } glxsdo->widget = cdata->widget; } else { glxsdo->widget = NULL; } #endif glxsdo->configData = (AwtGraphicsConfigDataPtr)jlong_to_ptr(aData); if (glxsdo->configData == NULL) { free(glxsdo); JNU_ThrowNullPointerException(env, "Native GraphicsConfig data block missing"); return; } if (glxsdo->configData->glxInfo == NULL) { free(glxsdo); JNU_ThrowNullPointerException(env, "GLXGraphicsConfigInfo missing"); return; } #endif /* HEADLESS */ }