VSYNC 是在哪turn on的? 本帖最后由 AskAQuestion 于 2014-10-28 15:03:05 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请参考:http://www.2cto.com/kf/201401/270833.html app(Choreographer) 和surfaceflinger在需要vsync信号的时候,会发出要求去enableVsync(),没有人需要的时候会再关闭掉。所以vsync信号不是一直在发送的,而是按照需求来发出的。 那什么时候会需要发呢?我这好像之后一直没有收到enableVsync,这是为什么? 那什么时候会需要发呢?我这好像之后一直没有收到enableVsync,这是为什么?app需要刷新的时候会enable。但是如果你是android kitkat版本,又有些差异,4.4引入了dispsync,绝大多数时候是使用的software的vsycn,不会需要hwc发出vsync信号了,这种情况下vsync正常就不需要被enable了,只有在software vsync需要校正的时候才会enable。 我用的确实是4.4. 您说的software的vsycn是HWComposer::HWComposer()中的 mVSyncThread = new VSyncThread(*this); 吗?但这个因为mHwc存在没有执行啊? 我用的确实是4.4. 您说的software的vsycn是HWComposer::HWComposer()中的 mVSyncThread = new VSyncThread(*this); 吗?但这个因为mHwc存在没有执行啊?不是的,是DispSync这个class,你看看他的使用。 我把HWC_DISPLAY_VSYNC_PERIOD 设为了40*1000000,在SurfaceFlinger::onMessageReceived() case MessageQueue::REFRESH:加上了 ALOGD("#%d", (unsigned int)(systemTime()/1000000)); 发现SurfaceFlinger 的refresh好像每隔200ms左右才被调用一下,即便是在显示视屏。这是不是不正常啊? 这个不好说,你要确保你的ui是每个vsync都会刷新的,这个时间才有意义。你可以用systrace去抓取下信息看看。 我用systrace抓下来的html只显示了cpu,这是什么原因? 关于button的onclick属性 bindService问题 如何用蓝牙socket同时传输文字和图片 请教这种时间格式如何转换为固定的时间格式 Gps找不到provider怎么解决 listView显示来自网络的图片是如何实现? 关于android 的签名问题。。 反编译错误,高手请进 Maven SDK invalid 求几个可以上传的地址ftp或者http Cursor 放在finilly中也关不掉 报错,闪退 Android File.length() 获取相册图片文件大小出错
http://www.2cto.com/kf/201401/270833.html
所以vsync信号不是一直在发送的,而是按照需求来发出的。
那什么时候会需要发呢?我这好像之后一直没有收到enableVsync,这是为什么?
那什么时候会需要发呢?我这好像之后一直没有收到enableVsync,这是为什么?app需要刷新的时候会enable。但是如果你是android kitkat版本,又有些差异,4.4引入了dispsync,绝大多数时候是使用的software的vsycn,不会需要hwc发出vsync信号了,这种情况下vsync正常就不需要被enable了,只有在software vsync需要校正的时候才会enable。
我用的确实是4.4. 您说的software的vsycn是
HWComposer::HWComposer()中的 mVSyncThread = new VSyncThread(*this); 吗?
但这个因为mHwc存在没有执行啊?
我用的确实是4.4. 您说的software的vsycn是
HWComposer::HWComposer()中的 mVSyncThread = new VSyncThread(*this); 吗?
但这个因为mHwc存在没有执行啊?不是的,是DispSync这个class,你看看他的使用。
我把HWC_DISPLAY_VSYNC_PERIOD 设为了40*1000000,
在
SurfaceFlinger::onMessageReceived()
case MessageQueue::REFRESH:
加上了
ALOGD("#%d", (unsigned int)(systemTime()/1000000)); 发现SurfaceFlinger 的refresh好像每隔200ms左右才被调用一下,即便是在显示视屏。这是不是不正常啊?
你可以用systrace去抓取下信息看看。
我用systrace抓下来的html只显示了cpu,这是什么原因?