解决方案 »
- 求问怎么给Fragment中的控件加监听?有几种方法?
- 推荐一系列优秀的Android开发源码
- 如何增加纵向的滚动条
- Gallery如何启动的时候是在中间位置?
- 修改了android linux核心的某个驱动以后,是不是要重新编译并且在最终用户的手机上重装android系统 才可以?
- 怎么样修改android系统的Notification下拉界面?
- 2d绘图用 ShapeDrawable.draw(canvas) 和 canvas.drawXXX 有啥区别?
- 关于编译android源码相关问题
- ubuntu怎么把openjdk7换回jdk6jre
- 瀑布流加载出来的图片怎么让每张图片都能够点击
- android如何使用自己编译的sdk?
- 重力感应问题~~~
你好,多谢回复!
但你给的地址只是对surfaceflinger的总体框架介绍,这部分我已稍有了解,
只是具体到其中的细节,就出现了问题,不知能否更近一步的指导指导,我的问题应该描述清楚了吧
void JNICALL xxxxxxxxxxxxxxxxxxxxxxxx
(JNIEnv *env, jobject thisObj, jobject objSurface)
{
jclass cls;
jfieldID fld;
jobject objCanvas;
jint nativeCanvas, outSurface; cls = (*env)->GetObjectClass(env, objSurface);
/* Surface: get native surface */
fld = (*env)->GetFieldID(env, cls, "mSurface", "I");
outSurface = (*env)->GetIntField (env, objSurface, fld); /* Surface: get canvas instance */
fld = (*env)->GetFieldID(env, cls, "mCanvas", "Landroid/graphics/Canvas;");
objCanvas = (*env)->GetObjectField (env, objSurface, fld); /* Canvas: get native canvas */
cls = (*env)->GetObjectClass(env, objCanvas);
fld = (*env)->GetFieldID(env, cls, "mNativeCanvas", "I");
nativeCanvas = (*env)->GetIntField (env, objCanvas, fld); /* If the canvas is null, something really bad happened. Assert fatal. */
if (nativeCanvas == 0)
{
doThrow(env, "java/lang/IllegalArgumentException",
"ERROR: initializeGFX: NULL nativeCanvas");
CRTL_printf("ERROR: initializeGFX: NULL nativeCanvas");
}最后绘图的部分:
err = surface->lock(&info, &dirtyRegion, true);/* Blocking */
memcpy(info.bits, sharedFramebuffer, imageBufferSize);
err = surface->unlockAndPost();希望对你有用
const sp<Surface>& native_surface = get_surface_remotemonitor(env, surface);
这句代码.因为你取的是一个强制类型转换的结果的引用...
我一直想验证sp<T>这个类在传递这种强制类型转换结果的时候,是否会传递的是中间变量...
但实在是不好做