static jboolean nativeIsConsumerRunningBehind(JNIEnv* env, jclass clazz, jlong nativeObject) { sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject)); if (!isSurfaceValid(sur)) { doThrowIAE(env); return JNI_FALSE; } int value = 0; ANativeWindow* anw = static_cast<ANativeWindow*>(sur.get()); anw->query(anw, NATIVE_WINDOW_CONSUMER_RUNNING_BEHIND, &value); return value; }
static void nativeSetDisplaySurface(JNIEnv* env, jclass clazz, jobject tokenObj, jlong nativeSurfaceObject) { sp<IBinder> token(ibinderForJavaObject(env, tokenObj)); if (token == NULL) return; sp<IGraphicBufferProducer> bufferProducer; sp<Surface> sur(reinterpret_cast<Surface *>(nativeSurfaceObject)); if (sur != NULL) { bufferProducer = sur->getIGraphicBufferProducer(); } SurfaceComposerClient::setDisplaySurface(token, bufferProducer); }
static void Surface_initParcel(JNIEnv* env, jobject clazz, jobject argParcel) { Parcel* parcel = (Parcel*)env->GetIntField(argParcel, no.native_parcel); if (parcel == NULL) { doThrowNPE(env); return; } sp<Surface> sur(Surface::readFromParcel(*parcel)); setSurface(env, clazz, sur); }
sp<ISurface> LayerBaseClient::createSurface() { class BSurface : public BnSurface, public LayerCleaner { virtual sp<ISurfaceTexture> getSurfaceTexture() const { return 0; } public: BSurface(const sp<SurfaceFlinger>& flinger, const sp<LayerBaseClient>& layer) : LayerCleaner(flinger, layer) { } }; sp<ISurface> sur(new BSurface(mFlinger, this)); return sur; }
sp<ISurface> Layer::createSurface() { class BSurface : public BnSurface, public LayerCleaner { wp<const Layer> mOwner; virtual sp<ISurfaceTexture> getSurfaceTexture() const { sp<ISurfaceTexture> res; sp<const Layer> that( mOwner.promote() ); if (that != NULL) { res = that->mSurfaceTexture; } return res; } public: BSurface(const sp<SurfaceFlinger>& flinger, const sp<Layer>& layer) : LayerCleaner(flinger, layer), mOwner(layer) { } }; sp<ISurface> sur(new BSurface(mFlinger, this)); return sur; }
Font* load_bitmap_font(const char* filename, int scale) { FONT* allegFont = NULL; int old_color_conv = _color_conv; set_color_conversion(COLORCONV_NONE); PALETTE junk; BITMAP* bmp = load_bitmap(filename, junk); set_color_conversion(old_color_conv); if (bmp) { Alleg4Surface sur(bmp, Alleg4Surface::DestroyHandle); if (scale > 1) sur.applyScale(scale); allegFont = bitmap_to_font(reinterpret_cast<BITMAP*>(sur.nativeHandle())); } if (allegFont) return new Alleg4Font(allegFont, Alleg4Font::DeleteAndDestroy); else return NULL; }
static jboolean nativeIsValid(JNIEnv* env, jclass clazz, jlong nativeObject) { sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject)); return isSurfaceValid(sur) ? JNI_TRUE : JNI_FALSE; }
static void nativeRelease(JNIEnv* env, jclass clazz, jlong nativeObject) { sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject)); sur->decStrong(&sRefBaseOwner); }