use of master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState in project ABPlayer by winkstu.
the class DrawTask method drawDanmakus.
protected RenderingState drawDanmakus(AbsDisplayer<?> disp, DanmakuTimer timer) {
if (clearRetainerFlag) {
DanmakusRetainer.clear();
clearRetainerFlag = false;
}
if (danmakuList != null) {
Canvas canvas = (Canvas) disp.getExtraData();
DrawHelper.clearCanvas(canvas);
if (mIsHidden) {
return mRenderingState;
}
long beginMills = timer.currMillisecond - DanmakuFactory.MAX_DANMAKU_DURATION - 100;
long endMills = timer.currMillisecond + DanmakuFactory.MAX_DANMAKU_DURATION;
if (mLastBeginMills > beginMills || timer.currMillisecond > mLastEndMills) {
IDanmakus subDanmakus = danmakuList.sub(beginMills, endMills);
if (subDanmakus != null) {
danmakus = subDanmakus;
} else {
danmakus.clear();
}
mLastBeginMills = beginMills;
mLastEndMills = endMills;
} else {
beginMills = mLastBeginMills;
endMills = mLastEndMills;
}
if (danmakus != null && !danmakus.isEmpty()) {
RenderingState renderingState = mRenderingState = mRenderer.draw(mDisp, danmakus, mStartRenderTime);
if (renderingState.nothingRendered) {
if (renderingState.beginTime == RenderingState.UNKNOWN_TIME) {
renderingState.beginTime = beginMills;
}
if (renderingState.endTime == RenderingState.UNKNOWN_TIME) {
renderingState.endTime = endMills;
}
}
return renderingState;
} else {
mRenderingState.nothingRendered = true;
mRenderingState.beginTime = beginMills;
mRenderingState.endTime = endMills;
return mRenderingState;
}
}
return null;
}
use of master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState in project ABPlayer by winkstu.
the class DanmakuSurfaceView method drawDanmakus.
@Override
public long drawDanmakus() {
if (!isSurfaceCreated)
return 0;
if (!isShown())
return -1;
long stime = System.currentTimeMillis();
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 = System.currentTimeMillis() - 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 = System.currentTimeMillis() - stime;
return dtime;
}
use of master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState in project ABPlayer by winkstu.
the class DanmakuTextureView method drawDanmakus.
@Override
public synchronized long drawDanmakus() {
if (!isSurfaceCreated)
return 0;
long stime = System.currentTimeMillis();
if (!isShown())
return -1;
long dtime = 0;
Canvas canvas = lockCanvas();
if (canvas != null) {
if (handler != null) {
RenderingState rs = handler.draw(canvas);
if (mShowFps) {
if (mDrawTimes == null)
mDrawTimes = new LinkedList<Long>();
dtime = System.currentTimeMillis() - 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)
unlockCanvasAndPost(canvas);
}
dtime = System.currentTimeMillis() - stime;
return dtime;
}
use of master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState in project DanmakuFlameMaster by Bilibili.
the class DrawTask method drawDanmakus.
protected RenderingState drawDanmakus(AbsDisplayer disp, DanmakuTimer timer) {
if (clearRetainerFlag) {
mRenderer.clearRetainer();
clearRetainerFlag = false;
}
if (danmakuList != null) {
Canvas canvas = (Canvas) disp.getExtraData();
DrawHelper.clearCanvas(canvas);
if (mIsHidden) {
return mRenderingState;
}
RenderingState renderingState = mRenderingState;
// prepare screenDanmakus
long beginMills = timer.currMillisecond - mContext.mDanmakuFactory.MAX_DANMAKU_DURATION - 100;
long endMills = timer.currMillisecond + mContext.mDanmakuFactory.MAX_DANMAKU_DURATION;
IDanmakus screenDanmakus = danmakus;
if (mLastBeginMills > beginMills || timer.currMillisecond > mLastEndMills) {
screenDanmakus = danmakuList.sub(beginMills, endMills);
if (screenDanmakus != null) {
danmakus = screenDanmakus;
}
mLastBeginMills = beginMills;
mLastEndMills = endMills;
} else {
beginMills = mLastBeginMills;
endMills = mLastEndMills;
}
// prepare runningDanmakus to draw (in sync-mode)
IDanmakus runningDanmakus = mRunningDanmakus;
beginTracing(renderingState, runningDanmakus, screenDanmakus);
if (runningDanmakus != null && !runningDanmakus.isEmpty()) {
mRenderingState.isRunningDanmakus = true;
mRenderer.draw(disp, runningDanmakus, 0, mRenderingState);
}
// draw screenDanmakus
mRenderingState.isRunningDanmakus = false;
if (screenDanmakus != null && !screenDanmakus.isEmpty()) {
mRenderer.draw(mDisp, screenDanmakus, mStartRenderTime, renderingState);
endTracing(renderingState);
if (renderingState.nothingRendered) {
if (mLastDanmaku != null && mLastDanmaku.isTimeOut()) {
mLastDanmaku = null;
if (mTaskListener != null) {
mTaskListener.onDanmakusDrawingFinished();
}
}
if (renderingState.beginTime == RenderingState.UNKNOWN_TIME) {
renderingState.beginTime = beginMills;
}
if (renderingState.endTime == RenderingState.UNKNOWN_TIME) {
renderingState.endTime = endMills;
}
}
return renderingState;
} else {
renderingState.nothingRendered = true;
renderingState.beginTime = beginMills;
renderingState.endTime = endMills;
return renderingState;
}
}
return null;
}
use of master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState in project DanmakuFlameMaster by Bilibili.
the class DanmakuTextureView method drawDanmakus.
@Override
public synchronized long drawDanmakus() {
if (!isSurfaceCreated)
return 0;
long stime = SystemClock.uptimeMillis();
if (!isShown())
return -1;
long dtime = 0;
Canvas canvas = 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)
unlockCanvasAndPost(canvas);
}
dtime = SystemClock.uptimeMillis() - stime;
return dtime;
}
Aggregations