从handle得到GraphicBuffer

先定义一个宏:

cpp 复制代码
#ifndef container_of
#define container_of(ptr, type, member) \
    (type *)((char*)(ptr) - offsetof(type, member))
#endif

然后:

cpp 复制代码
ANativeWindowBuffer *anwBuffer = container_of(buffer, ANativeWindowBuffer, handle);

其中buffer的类型是:

cpp 复制代码
buffer_handle_t *buffer;

得到ANativeWindowBuffer以后:

cpp 复制代码
sp<GraphicBuffer> GraphicBuffer::from(ANativeWindowBuffer* anwb) {
    return static_cast<GraphicBuffer *>(anwb);
}
相关推荐
炸炸鱼.1 分钟前
MySQL 全量、增量备份与恢复(极简易懂版)
android·adb
always_TT1 小时前
内存泄漏是什么?如何避免?
android·java·开发语言
xiangxiongfly9152 小时前
Android ViewRootImpl源码分析
android·绘制流程·viewrootimpl·activitythread
Yang-Never2 小时前
ADB ->Android 实时监控内存
android·开发语言·adb·android studio
zhangren024682 小时前
Laravel5.x版本特性全解析
android·vue.js·spring boot·mysql
2501_915918412 小时前
WebKit 抓包,WKWebView 请求的完整数据获取方法
android·前端·ios·小程序·uni-app·iphone·webkit
EasyControl移动设备管理2 小时前
打破系统壁垒:从 Android 到 macOS,打造全平台统一终端管理(MDM)方案
android·人工智能·物联网·macos·移动设备管理·mdm系统·跨区域设备
帅得不敢出门2 小时前
Android Framework中调用由java编译成的jar接口
android·java·framework·jar
火山上的企鹅2 小时前
QGC 二次开发实战:Android 单机离线授权怎么落地
android·qt·qgroundconrol·离线授权
黄林晴2 小时前
Swift 杀进 Android,Google 和 Apple 都要失眠了?
android·前端·swift