static int32_t isXTestAvailable() { int32_t major_opcode, first_event, first_error; int32_t event_basep, error_basep, majorp, minorp; int32_t isXTestAvailable; /* check if XTest is available */ isXTestAvailable = XQueryExtension(awt_display, XTestExtensionName, &major_opcode, &first_event, &first_error); DTRACE_PRINTLN3("RobotPeer: XQueryExtension(XTEST) returns major_opcode = %d, first_event = %d, first_error = %d", major_opcode, first_event, first_error); if (isXTestAvailable) { /* check if XTest version is OK */ XTestQueryExtension(awt_display, &event_basep, &error_basep, &majorp, &minorp); DTRACE_PRINTLN4("RobotPeer: XTestQueryExtension returns event_basep = %d, error_basep = %d, majorp = %d, minorp = %d", event_basep, error_basep, majorp, minorp); if (majorp < 2 || (majorp == 2 && minorp < 2)) { /* bad version*/ DTRACE_PRINTLN2("XRobotPeer: XTEST version is %d.%d \n", majorp, minorp); if (majorp == 2 && minorp == 1) { DTRACE_PRINTLN("XRobotPeer: XTEST is 2.1 - no grab is available\n"); } else { isXTestAvailable = False; } } else { /* allow XTest calls even if someone else has the grab; e.g. during * a window resize operation. Works only with XTEST2.2*/ XTestGrabControl(awt_display, True); } } else { DTRACE_PRINTLN("RobotPeer: XTEST extension is unavailable"); } return isXTestAvailable; }
HRESULT DX7Object::CreateSurface(DWORD dwCaps, DWORD ddsCaps, LPDDPIXELFORMAT lpPf, int width, int height, DXSurface **lpDDSurface, int numBackBuffers) { IDirectDrawSurface7 *lpSurface; HRESULT ddResult; DDSURFACEDESC2 ddsd; memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); ddsd.dwFlags = dwCaps; ddsd.ddsCaps.dwCaps = ddsCaps; ddsd.dwWidth = width; ddsd.dwHeight = height; ddsd.dwBackBufferCount = numBackBuffers; if (lpPf) { memcpy(&ddsd.ddpfPixelFormat, lpPf, sizeof(DDPIXELFORMAT)); } ddResult = ddObject->CreateSurface(&ddsd, &lpSurface, NULL); if (ddResult != DD_OK) { DebugPrintDirectDrawError(ddResult, "DX7Object::CreateSurface"); return ddResult; } *lpDDSurface = (DXSurface*)new DX7Surface(lpSurface); DTRACE_PRINTLN3("DX7Object:: CreateSurface w, h, dxSurf = %d, %d, 0x%x", width, height, *lpDDSurface); return DD_OK; }
void AwtScrollPane::_SetScrollPos(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SetScrollPosStruct *spss = (SetScrollPosStruct *)param; jobject self = spss->scrollpane; jint x = spss->x; jint y = spss->y; AwtScrollPane *s = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); s = (AwtScrollPane *)pData; if (::IsWindow(s->GetHWnd())) { DTRACE_PRINTLN3("%x: WScrollPanePeer.setScrollPosition(%d, %d)", self, x, y); SCROLLINFO si; ZeroMemory(&si, sizeof(si)); si.fMask = SIF_POS; si.cbSize = sizeof(si); // set x si.nPos = x; ::SetScrollInfo(s->GetHWnd(), SB_HORZ, &si, TRUE); // set y si.nPos = y; ::SetScrollInfo(s->GetHWnd(), SB_VERT, &si, TRUE); } ret: env->DeleteGlobalRef(self); delete spss; }
static int awt_mgrsel_unmanaged(XDestroyWindowEvent *ev) { Display *dpy = awt_display; struct AwtMgrsel *mgrsel; Window exowner; int scr; exowner = ev->window; /* selection owner that's gone */ /* is this a selection we are intrested in? */ for (mgrsel = mgrsel_list; mgrsel != NULL; mgrsel = mgrsel->next) { for (scr = 0; scr < ScreenCount(dpy); ++scr) { if (exowner == mgrsel->per_scr_owners[scr]) { /* can one window own selections for more than one screen? */ goto out; /* XXX??? */ } } } out: if (mgrsel == NULL) { DTRACE_PRINTLN1("MG: DestroyNotify for 0x%08lx ignored", exowner); return (0); } DTRACE_PRINTLN3("MG: DestroyNotify for 0x%08lx, owner of %s at screen %d", exowner, mgrsel->selname, scr); /* notify the listener (pass exowner as data???) */ if (mgrsel->callback_owner != NULL) { (*mgrsel->callback_owner)(scr, None, NULL, mgrsel->cookie); } return (1); }
/* * Class: sun_awt_windows_WScrollPanePeer * Method: setScrollPosition * Signature: (II)V */ JNIEXPORT void JNICALL Java_sun_awt_windows_WScrollPanePeer_setScrollPosition(JNIEnv *env, jobject self, jint x, jint y) { TRY; DTRACE_PRINTLN3("%x: WScrollPanePeer.setScrollPosition(%d, %d)", self, x, y); PDATA pData; JNI_CHECK_PEER_RETURN(self); AwtScrollPane* pane = (AwtScrollPane *)pData; pane->SetScrollPos(SB_HORZ, x); pane->SetScrollPos(SB_VERT, y); CATCH_BAD_ALLOC; }
JNIEXPORT void JNICALL Java_sun_awt_X11_XRobotPeer_mouseMoveImpl (JNIEnv *env, jclass cls, jobject xgc, jint root_x, jint root_y) { AwtGraphicsConfigDataPtr adata; AWT_LOCK(); DTRACE_PRINTLN3("RobotPeer: mouseMoveImpl(%lx, %i, %i)", xgc, root_x, root_y); adata = (AwtGraphicsConfigDataPtr) JNU_GetLongFieldAsPtr(env, xgc, x11GraphicsConfigIDs.aData); DASSERT(adata != NULL); XWarpPointer(awt_display, None, XRootWindow(awt_display, adata->awt_visInfo.screen), 0, 0, 0, 0, root_x, root_y); XSync(awt_display, False); AWT_UNLOCK(); }
static void assert_result(HRESULT hres, JNIEnv *env) { #ifdef _DEBUG if (hres != 0) { DWORD lastError = GetLastError(); if (lastError != 0) { LPSTR msgBuffer = NULL; FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, lastError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&msgBuffer, // it's an output parameter when allocate buffer is used 0, NULL); DTRACE_PRINTLN3("Error: hres=0x%x lastError=0x%x %s\n", hres, lastError, msgBuffer); } } #endif }