bilibili / DanmakuFlameMaster

Android开源弹幕引擎·烈焰弹幕使 ~
http://app.bilibili.com/
Apache License 2.0
9.54k stars 2.1k forks source link

drawHandler中handleMessage分支 #330

Closed Zephry closed 7 years ago

Zephry commented 7 years ago

case SHOW_DANMAKUS: mDanmakusVisible = true; Long start = (Long) msg.obj; boolean resume = false; if (drawTask != null) { if (start == null) { timer.update(getCurrentTime()); drawTask.requestClear(); } else { drawTask.start(); drawTask.seek(start); drawTask.requestClear(); resume = true; } } if (quitFlag && mDanmakuView != null) { mDanmakuView.drawDanmakus(); } notifyRendering(); if (!resume) { break; } case START: Long startTime = (Long) msg.obj; if (startTime != null) { pausedPosition = startTime; } else { pausedPosition = 0; } case SEEK_POS: if (what == SEEK_POS) { quitFlag = true; quitUpdateThread(); Long position = (Long) msg.obj; long deltaMs = position - timer.currMillisecond; mTimeBase -= deltaMs; timer.update(position); mContext.mGlobalFlagValues.updateMeasureFlag(); if (drawTask != null) drawTask.seek(position); pausedPosition = position; } case RESUME: removeMessages(DrawHandler.PAUSE); quitFlag = false; if (mReady) { mRenderingState.reset(); mDrawTimes.clear(); mTimeBase = SystemClock.uptimeMillis() - pausedPosition; timer.update(pausedPosition); removeMessages(RESUME); sendEmptyMessage(UPDATE); drawTask.start(); notifyRendering(); mInSeekingAction = false; if (drawTask != null) { drawTask.onPlayStateChanged(IDrawTask.PLAY_STATE_PLAYING); } } else { sendEmptyMessageDelayed(RESUME, 100); } break;

请问case START,SEEK_POS,RESUME之间没有break是特意这样设计的吗?