314
315 if (firstTime) {
316 #ifdef DISABLE_XRENDER_BY_DEFAULT
317 if (verbose == JNI_FALSE) {
318 xrenderAvailable = JNI_FALSE;
319 firstTime = JNI_FALSE;
320 return xrenderAvailable;
321 }
322 #endif
323 AWT_LOCK();
324 xrenderAvailable = IsXRenderAvailable(verbose, ignoreLinuxVersion);
325 AWT_UNLOCK();
326 firstTime = JNI_FALSE;
327 }
328 return xrenderAvailable;
329 #else
330 return JNI_FALSE;
331 #endif /* !HEADLESS */
332 }
333
334
335 JNIEXPORT void JNICALL
336 Java_sun_java2d_xr_XRBackendNative_initIDs(JNIEnv *env, jclass cls) {
337 char *maskData;
338 XImage* defaultImg;
339 jfieldID maskImgID;
340 jlong fmt8;
341 jlong fmt32;
342
343 jfieldID a8ID = (*env)->GetStaticFieldID(env, cls, "FMTPTR_A8", "J");
344 if (a8ID == NULL) {
345 return;
346 }
347 jfieldID argb32ID = (*env)->GetStaticFieldID(env, cls, "FMTPTR_ARGB32", "J");
348 if (argb32ID == NULL) {
349 return;
350 }
351
352 if (awt_display == (Display *)NULL) {
353 return;
354 }
355
356 fmt8 = ptr_to_jlong(XRenderFindStandardFormat(awt_display, PictStandardA8));
357 fmt32 = ptr_to_jlong(XRenderFindStandardFormat(awt_display, PictStandardARGB32));
358
359 (*env)->SetStaticLongField(env, cls, a8ID, fmt8);
360 (*env)->SetStaticLongField(env, cls, argb32ID, fmt32);
361
362 maskData = (char *) malloc(32*32);
363 if (maskData == NULL) {
364 return;
365 }
366
367 defaultImg = XCreateImage(awt_display, NULL, 8, ZPixmap, 0, maskData, 32, 32, 8, 0);
368 defaultImg->data = maskData; //required?
369 maskImgID = (*env)->GetStaticFieldID(env, cls, "MASK_XIMG", "J");
370 if (maskImgID == NULL) {
371 return;
372 }
373
374 (*env)->SetStaticLongField(env, cls, maskImgID, ptr_to_jlong(defaultImg));
375 }
376
377 JNIEXPORT void JNICALL
378 Java_sun_java2d_xr_XRBackendNative_freeGC
379 (JNIEnv *env, jobject this, jlong gc) {
380 XFreeGC(awt_display, (GC) jlong_to_ptr(gc));
381 }
382
383 JNIEXPORT jlong JNICALL
384 Java_sun_java2d_xr_XRBackendNative_createGC
385 (JNIEnv *env, jobject this, jint drawable) {
386 GC xgc = XCreateGC(awt_display, (Drawable) drawable, 0L, NULL);
387 return ptr_to_jlong(xgc);
388 }
389
390 JNIEXPORT jint JNICALL
391 Java_sun_java2d_xr_XRBackendNative_createPixmap(JNIEnv *env, jobject this,
392 jint drawable, jint depth,
393 jint width, jint height) {
394 return (jint) XCreatePixmap(awt_display, (Drawable) drawable,
|
314
315 if (firstTime) {
316 #ifdef DISABLE_XRENDER_BY_DEFAULT
317 if (verbose == JNI_FALSE) {
318 xrenderAvailable = JNI_FALSE;
319 firstTime = JNI_FALSE;
320 return xrenderAvailable;
321 }
322 #endif
323 AWT_LOCK();
324 xrenderAvailable = IsXRenderAvailable(verbose, ignoreLinuxVersion);
325 AWT_UNLOCK();
326 firstTime = JNI_FALSE;
327 }
328 return xrenderAvailable;
329 #else
330 return JNI_FALSE;
331 #endif /* !HEADLESS */
332 }
333
334 JNIEXPORT void JNICALL
335 Java_sun_java2d_xr_XRBackendNative_initIDs(JNIEnv *env, jclass cls, jint maxAATileWidth, jint maxAATileHeight) {
336 jlong fmt8;
337 jlong fmt32;
338
339 jfieldID a8ID = (*env)->GetStaticFieldID(env, cls, "FMTPTR_A8", "J");
340 if (a8ID == NULL) {
341 return;
342 }
343 jfieldID argb32ID = (*env)->GetStaticFieldID(env, cls, "FMTPTR_ARGB32", "J");
344 if (argb32ID == NULL) {
345 return;
346 }
347
348 if (awt_display == (Display *)NULL) {
349 return;
350 }
351
352 fmt8 = ptr_to_jlong(XRenderFindStandardFormat(awt_display, PictStandardA8));
353 fmt32 = ptr_to_jlong(XRenderFindStandardFormat(awt_display, PictStandardARGB32));
354
355 (*env)->SetStaticLongField(env, cls, a8ID, fmt8);
356 (*env)->SetStaticLongField(env, cls, argb32ID, fmt32);
357 }
358
359 JNIEXPORT jlong JNICALL
360 Java_sun_java2d_xr_XRBackendNative_initDefaultAAXImg(JNIEnv *env, jclass cls, jint maxAATileWidth, jint maxAATileHeight) {
361 char *maskData;
362 XImage* defaultImg;
363
364 maskData = (char *) malloc(maxAATileWidth * maxAATileHeight);
365 if (maskData == NULL) {
366 return 0;
367 }
368
369 defaultImg = XCreateImage(awt_display, NULL, 8, ZPixmap, 0, maskData, maxAATileWidth, maxAATileHeight, 8, 0);
370 defaultImg->data = maskData;
371
372 return ptr_to_jlong(defaultImg);
373 }
374
375 JNIEXPORT void JNICALL
376 Java_sun_java2d_xr_XRBackendNative_freeGC
377 (JNIEnv *env, jobject this, jlong gc) {
378 XFreeGC(awt_display, (GC) jlong_to_ptr(gc));
379 }
380
381 JNIEXPORT jlong JNICALL
382 Java_sun_java2d_xr_XRBackendNative_createGC
383 (JNIEnv *env, jobject this, jint drawable) {
384 GC xgc = XCreateGC(awt_display, (Drawable) drawable, 0L, NULL);
385 return ptr_to_jlong(xgc);
386 }
387
388 JNIEXPORT jint JNICALL
389 Java_sun_java2d_xr_XRBackendNative_createPixmap(JNIEnv *env, jobject this,
390 jint drawable, jint depth,
391 jint width, jint height) {
392 return (jint) XCreatePixmap(awt_display, (Drawable) drawable,
|