use of master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState in project DanmakuFlameMaster by Bilibili.
the class DanmakuSurfaceView method drawDanmakus.
@Override
public long drawDanmakus() {
if (!isSurfaceCreated)
return 0;
if (!isShown())
return -1;
long stime = SystemClock.uptimeMillis();
long dtime = 0;
Canvas canvas = mSurfaceHolder.lockCanvas();
if (canvas != null) {
if (handler != null) {
RenderingState rs = handler.draw(canvas);
if (mShowFps) {
if (mDrawTimes == null)
mDrawTimes = new LinkedList<Long>();
dtime = SystemClock.uptimeMillis() - stime;
String fps = String.format(Locale.getDefault(), "fps %.2f,time:%d s,cache:%d,miss:%d", fps(), getCurrentTime() / 1000, rs.cacheHitCount, rs.cacheMissCount);
DrawHelper.drawFPS(canvas, fps);
}
}
if (isSurfaceCreated)
mSurfaceHolder.unlockCanvasAndPost(canvas);
}
dtime = SystemClock.uptimeMillis() - stime;
return dtime;
}
use of master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState in project DanmakuFlameMaster by Bilibili.
the class CacheManagingDrawTask method draw.
@Override
public RenderingState draw(AbsDisplayer displayer) {
RenderingState result = super.draw(displayer);
synchronized (mDrawingNotify) {
mDrawingNotify.notify();
}
if (result != null && mCacheManager != null) {
if (result.totalDanmakuCount - result.lastTotalDanmakuCount < -20) {
mCacheManager.requestClearTimeout();
mCacheManager.requestBuild(-mContext.mDanmakuFactory.MAX_DANMAKU_DURATION);
}
}
return result;
}
use of master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState in project DanmakuFlameMaster by Bilibili.
the class DanmakuView method onDraw.
@Override
protected void onDraw(Canvas canvas) {
if ((!mDanmakuVisible) && (!mRequestRender)) {
super.onDraw(canvas);
return;
}
if (mClearFlag) {
DrawHelper.clearCanvas(canvas);
mClearFlag = false;
} else {
if (handler != null) {
RenderingState rs = handler.draw(canvas);
if (mShowFps) {
if (mDrawTimes == null)
mDrawTimes = new LinkedList<Long>();
String fps = String.format(Locale.getDefault(), "fps %.2f,time:%d s,cache:%d,miss:%d", fps(), getCurrentTime() / 1000, rs.cacheHitCount, rs.cacheMissCount);
DrawHelper.drawFPS(canvas, fps);
}
}
}
mRequestRender = false;
unlockCanvasAndPost();
}
use of master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState in project ABPlayer by winkstu.
the class DanmakuView method onDraw.
@Override
protected void onDraw(Canvas canvas) {
if ((!mDanmakuVisible) && (!mRequestRender)) {
super.onDraw(canvas);
return;
}
if (mClearFlag) {
DrawHelper.clearCanvas(canvas);
mClearFlag = false;
} else {
if (handler != null) {
RenderingState rs = handler.draw(canvas);
if (mShowFps) {
if (mDrawTimes == null)
mDrawTimes = new LinkedList<Long>();
String fps = String.format(Locale.getDefault(), "fps %.2f,time:%d s,cache:%d,miss:%d", fps(), getCurrentTime() / 1000, rs.cacheHitCount, rs.cacheMissCount);
DrawHelper.drawFPS(canvas, fps);
}
}
}
mRequestRender = false;
unlockCanvasAndPost();
}
use of master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState in project ABPlayer by winkstu.
the class CacheManagingDrawTask method draw.
@Override
public RenderingState draw(AbsDisplayer<?> displayer) {
RenderingState result = null;
synchronized (danmakuList) {
result = super.draw(displayer);
}
synchronized (mDrawingNotify) {
mDrawingNotify.notify();
}
if (result != null && mCacheManager != null) {
if (result.incrementCount < -20) {
mCacheManager.requestClearTimeout();
mCacheManager.requestBuild(-DanmakuFactory.MAX_DANMAKU_DURATION);
}
}
return result;
}
Aggregations