Search in sources :

Example 1 with RenderingState

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;
}
Also used : Canvas(android.graphics.Canvas) RenderingState(master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState) LinkedList(java.util.LinkedList)

Example 2 with RenderingState

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;
}
Also used : RenderingState(master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState)

Example 3 with RenderingState

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();
}
Also used : RenderingState(master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState) LinkedList(java.util.LinkedList)

Example 4 with RenderingState

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();
}
Also used : RenderingState(master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState) LinkedList(java.util.LinkedList)

Example 5 with RenderingState

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;
}
Also used : RenderingState(master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState)

Aggregations

RenderingState (master.flame.danmaku.danmaku.renderer.IRenderer.RenderingState)10 Canvas (android.graphics.Canvas)6 LinkedList (java.util.LinkedList)6 IDanmakus (master.flame.danmaku.danmaku.model.IDanmakus)2