99久久久久久久久96久久,青青操在线视频免费播放,亚洲黄色天堂视频网,91国产原创精品人妻,2020亚洲欧美国产日韩,亚洲三级免费观看网址,免费女人高潮又粗肛交毛片,啊啊啊嗯呢啊啊啊官网首页,免费av三级在线观看

聯(lián)系我們 - 廣告服務(wù) - 聯(lián)系電話(huà):
您的當(dāng)前位置: > 關(guān)注 > > 正文

View繪制流程2-安卓如何執(zhí)行measure/draw 全球最新

來(lái)源:CSDN 時(shí)間:2023-04-24 08:29:22

前言:

vsync信號(hào)其實(shí)主要有兩種,APP和SF兩種。


(資料圖)

兩種類(lèi)似的信號(hào)分別具有以下的作用:

1.APP類(lèi)型,我們常說(shuō)的Vsync信號(hào)其實(shí)指的就是這種類(lèi)型。

2.SF類(lèi)型,我感覺(jué)有可能是SurfaceFlinger的縮寫(xiě),這個(gè)同步信號(hào)主要是通知進(jìn)行數(shù)據(jù)buffer的合成。

本文主要探討的主APP類(lèi)型的Vsync信號(hào),SF類(lèi)型的會(huì)在另外一篇文章,View繪制流程中講解。

一.整體流程簡(jiǎn)介

我把a(bǔ)pp-VSync的整個(gè)流程分為四大塊:

第一塊,APP側(cè)發(fā)出請(qǐng)求信號(hào),通知到SurfaceFlinger;

第二塊,SurfaceFlinger收到通知后,作為消費(fèi)者側(cè)去緩存池中查詢(xún)是否存在VSYNC,如果有,則通知APP側(cè)。

第三塊,SurfaceFlinger中的生產(chǎn)者邏輯,生產(chǎn)下一次的Vsync信號(hào)。

第四塊,APP側(cè)收到Vsync信號(hào)后進(jìn)行處理,最終完成繪制流程。

整體的流程圖如下圖所示,后續(xù)文章也會(huì)按照這四大塊流程去細(xì)講。

二.客戶(hù)端發(fā)出信號(hào)

2.1 java端流轉(zhuǎn)

我們把代碼的開(kāi)始點(diǎn)設(shè)置為ViewRootImpl中的scheduleTraversals方法,如果想了解這個(gè)方法之前的流程,可以參看我的另外一篇文章:

View繪制流程2-安卓是如何執(zhí)行measure/layout/draw三個(gè)繪制流程_失落夏天的博客-CSDN博客

scheduleTraversals是負(fù)責(zé)渲染流程的,界面上任何布局上的改動(dòng),最終都會(huì)執(zhí)行這個(gè)方法進(jìn)行刷新操作。scheduleTraversals會(huì)通過(guò)Choreographer的postCallback方法去請(qǐng)求Vsync信號(hào)并且設(shè)置回調(diào)方法。

mChoreographer.postCallback(                    Choreographer.CALLBACK_TRAVERSAL, mTraversalRunnable, null);

Choreographer中的最終實(shí)現(xiàn)是postCallbackDelayedInternal方法:

private void postCallbackDelayedInternal(int callbackType,            Object action, Object token, long delayMillis) {        ...        synchronized (mLock) {            final long now = SystemClock.uptimeMillis();            final long dueTime = now + delayMillis;            mCallbackQueues[callbackType].addCallbackLocked(dueTime, action, token);            if (dueTime <= now) {                scheduleFrameLocked(now);            }            ...        }    }

這個(gè)方法會(huì)把回調(diào)加入到mCallbackQueues中,然后通過(guò)scheduleFrameLocked方法開(kāi)始請(qǐng)求Vsync信號(hào)。

scheduleFrameLocked中又會(huì)進(jìn)行層層傳遞,最終調(diào)用到native方法。傳遞關(guān)系如下:

scheduleFrameLocked(Choreographer.java)->scheduleVsyncLocked(Choreographer.java)->scheduleVsync(DisplayEventReceiver.java)->nativeScheduleVsync(DisplayEventReceiver.java)

2.2 native方法中的邏輯流轉(zhuǎn)

nativeScheduleVsync在native層的注冊(cè)是DisplayEventReceiver.cpp中的nativeScheduleVsync方法,方法中通過(guò)NativeDisplayEventReceiver的scheduleVsync來(lái)完成請(qǐng)求:

static void nativeScheduleVsync(JNIEnv* env, jclass clazz, jlong receiverPtr) {    spreceiver =            reinterpret_cast(receiverPtr);    status_t status = receiver->scheduleVsync();   ...}

NativeDisplayEventReceiver是DisplayEventDispatcher的子類(lèi),scheduleVsync方法會(huì)執(zhí)行到DisplayEventDispatcher中的scheduleVsync方法,調(diào)用DisplayEventReceiver的requestNextVsync繼續(xù)請(qǐng)求流程。

status_t DisplayEventDispatcher::scheduleVsync() {    if (!mWaitingForVsync) {        ...        status_t status = mReceiver.requestNextVsync();        ...        mWaitingForVsync = true;        ...    }    return OK;}

這里有一個(gè)本地變量mWaitingForVsync,如果請(qǐng)求了一次sync,就會(huì)改為true,接下來(lái)的Vsync請(qǐng)求,都不會(huì)傳輸?shù)絊urfaceFlinger一層了,避免重復(fù)無(wú)意義請(qǐng)求。只有等到收到Vsync信號(hào)的時(shí)候,才會(huì)改為false。

DisplayEventReceiver中,會(huì)交給mEventConnection處理:

status_t DisplayEventReceiver::requestNextVsync() {    if (mEventConnection != nullptr) {        mEventConnection->requestNextVsync();        return NO_ERROR;    }    return NO_INIT;}

mEventConnection其實(shí)是一個(gè)binder客戶(hù)端,是在創(chuàng)建DisplayEventReceiver的時(shí)候通過(guò)binder方法創(chuàng)建的,其binder服務(wù)端實(shí)現(xiàn)在SurfaceFlinger進(jìn)程側(cè)的EventThread.cpp。

DisplayEventReceiver::DisplayEventReceiver(        ISurfaceComposer::VsyncSource vsyncSource,        ISurfaceComposer::EventRegistrationFlags eventRegistration) {    spsf(ComposerService::getComposerService());    if (sf != nullptr) {        mEventConnection = sf->createDisplayEventConnection(vsyncSource, eventRegistration);        ...    }}

三.SurfaceFlinger端Vsync信號(hào)消費(fèi)者

首先,SurfaceFlinger的總體結(jié)構(gòu)圖如下,SurfaceFlinger中存在一個(gè)Scheduler,Scheduler中存在多個(gè)VsyncDispatch。其中VSYNC-app負(fù)責(zé)所有APP的VSYNC信號(hào)的處理,本文主要講的也是這個(gè)流程中的。

其次,下圖是主流程圖中的一部分,也是本章要講的內(nèi)容。

3.1 EventThread收到通知后,轉(zhuǎn)發(fā)EventThread的工作線(xiàn)程

是接收方法如下,轉(zhuǎn)發(fā)到mEventThread的requestNextVsync方法中。

binder::Status EventThreadConnection::requestNextVsync() {    ATRACE_CALL();    mEventThread->requestNextVsync(this);    return binder::Status::ok();}

我們接著看一下EventThread中的requestNextVsync方法:

void EventThread::requestNextVsync(const sp& connection) {    ...    if (connection->vsyncRequest == VSyncRequest::None) {        connection->vsyncRequest = VSyncRequest::Single;        mCondition.notify_all();    } else if (connection->vsyncRequest == VSyncRequest::SingleSuppressCallback) {        connection->vsyncRequest = VSyncRequest::Single;    }}

這里的邏輯很簡(jiǎn)單,如果當(dāng)前的VSYNC狀態(tài)是None的話(huà),釋放鎖mCondition。

這里既然notify_all,那么一定有地方wait等待鎖,而等待的地方就是threadMain方法。

3.2 threadMain方法

這個(gè)方法算是整個(gè)Vsync流程的核心,它是一個(gè)無(wú)限循環(huán)的模式,其作用是不斷的從mPendingEvents中獲取Vsync信號(hào),然后轉(zhuǎn)交給APP端。并且在一次Vsync流程結(jié)束后,又通過(guò)VsyncSource請(qǐng)求下一次的Vsync信號(hào)。

threadMain方法是EventThread類(lèi)初始化的時(shí)候創(chuàng)建的線(xiàn)程去執(zhí)行的方法:

mThread = std::thread([this]() NO_THREAD_SAFETY_ANALYSIS {        std::unique_locklock(mMutex);        threadMain(lock);    });

我們看一下精簡(jiǎn)后的threadMain方法:

void EventThread::threadMain(std::unique_lock& lock) {    DisplayEventConsumers consumers;    //只要沒(méi)有退出,就一直循環(huán)    while (mState != State::Quit) {        執(zhí)行以下1-7的操作           }}

總體來(lái)說(shuō),分為以下四大步驟:

1.作為消費(fèi)者嘗試從mPendingEvents中獲取Vsync信號(hào),如果獲取成功,則賦值給event。

std::optionalevent;        //查看mPendingEvents中是否存在Vsync信號(hào)        if (!mPendingEvents.empty()) {            event = mPendingEvents.front();            mPendingEvents.pop_front();            ...        }

2.計(jì)算vsyncRequested的狀態(tài),只要客戶(hù)端消費(fèi)者的Connection保持連接,則vsyncRequested=true,并且上面步驟一獲取到event的話(huà),則把消費(fèi)者的connection加入到consumers集合中。

bool vsyncRequested = false;       //獲取當(dāng)前的狀態(tài),并且判斷是否有客戶(hù)端的消費(fèi)者在請(qǐng)求,如果有則加入到consumers集合中        auto it = mDisplayEventConnections.begin();        while (it != mDisplayEventConnections.end()) {            if (const auto connection = it->promote()) {                //客戶(hù)端還是處于請(qǐng)求的狀態(tài)                vsyncRequested |= connection->vsyncRequest != VSyncRequest::None;                if (event && shouldConsumeEvent(*event, connection)) {                    consumers.push_back(connection);                }                ++it;            } else {                it = mDisplayEventConnections.erase(it);            }        }

3.如果consumers集合不為空,則進(jìn)行消費(fèi)。把Vsync信號(hào)分發(fā)給消費(fèi)者。(具體步驟我們下一小節(jié)中講)

//如果消費(fèi)者不為空,則通過(guò)dispatchEvent方法最終通知到APP一側(cè)        if (!consumers.empty()) {            dispatchEvent(*event, consumers);            consumers.clear();        }

4.獲取下一個(gè)狀態(tài)

//mVSyncState不會(huì)為空,則主要是根據(jù)vsyncRequested來(lái)判斷的。vsyncRequested上面計(jì)算的        State nextState;        if (mVSyncState && vsyncRequested) {            nextState = mVSyncState->synthetic ? State::SyntheticVSync : State::VSync;        } else {            ALOGW_IF(!mVSyncState, "Ignoring VSYNC request while display is disconnected");            nextState = State::Idle;        }

5.進(jìn)行判斷,確定是否需要請(qǐng)求VSYNC信號(hào)。這一塊挺有意思的,簡(jiǎn)單理解如下:

如果當(dāng)前是VSYNC狀態(tài),下一個(gè)狀態(tài)也是VSYNC狀態(tài),那么說(shuō)明信號(hào)還沒(méi)來(lái),所以沒(méi)必要重復(fù)發(fā)送。

如果當(dāng)前是Idle狀態(tài),下一個(gè)狀態(tài)是VSYNC狀態(tài),那么則要進(jìn)行VSYNC信號(hào)請(qǐng)求。

如果當(dāng)前是VSYNC狀態(tài),下一個(gè)狀態(tài)也是Idle狀態(tài),那么說(shuō)明信號(hào)已經(jīng)來(lái)了,下一次的客戶(hù)端請(qǐng)求還沒(méi)來(lái),所以不要進(jìn)行VSYNC信號(hào)請(qǐng)求,則會(huì)進(jìn)行取消操作。

if (mState != nextState) {            if (mState == State::VSync) {                mVSyncSource->setVSyncEnabled(false);            } else if (nextState == State::VSync) {                //如果下一個(gè)狀態(tài)還是VSync,則繼續(xù)去請(qǐng)求VSYNC信號(hào)                mVSyncSource->setVSyncEnabled(true);            }            mState = nextState;        }

如何開(kāi)始和結(jié)束去進(jìn)行VSYNC信號(hào)獲取的獲取操作,我們第四章中講,這個(gè)主要就是消費(fèi)者邏輯了。

6.如果event為空,說(shuō)明mPendingEvents中已經(jīng)取光了,則進(jìn)入休眠操作。

反之event不為空,說(shuō)明mPendingEvents中也許還存在未消費(fèi)的VSYNC信號(hào),則contine繼續(xù)消費(fèi)。

//如果處理了event,那么說(shuō)明此次已經(jīng)拿到了Vsync信號(hào),說(shuō)明后面有可能還有,則繼續(xù)拿        if (event) {            continue;        }

7.進(jìn)入休眠或者超時(shí)之后主動(dòng)模擬信號(hào)加入到mPendingEvents中。

//說(shuō)明Vsync信號(hào)已經(jīng)消費(fèi)完了,則進(jìn)入休眠模式,等到APP側(cè)的下一次通知進(jìn)行喚醒        // Wait for event or client registration/request.        if (mState == State::Idle) {            mCondition.wait(lock);        } else {            // Generate a fake VSYNC after a long timeout in case the driver stalls. When the            // display is off, keep feeding clients at 60 Hz.            const std::chrono::nanoseconds timeout =                    mState == State::SyntheticVSync ? 16ms : 1000ms;            if (mCondition.wait_for(lock, timeout) == std::cv_status::timeout) {                if (mState == State::VSync) {                    ALOGW("Faking VSYNC due to driver stall for thread %s", mThreadName);                    std::string debugInfo = "VsyncSource debug info:\n";                    mVSyncSource->dump(debugInfo);                    // Log the debug info line-by-line to avoid logcat overflow                    auto pos = debugInfo.find("\n");                    while (pos != std::string::npos) {                        ALOGW("%s", debugInfo.substr(0, pos).c_str());                        debugInfo = debugInfo.substr(pos + 1);                        pos = debugInfo.find("\n");                    }                }                LOG_FATAL_IF(!mVSyncState);                const auto now = systemTime(SYSTEM_TIME_MONOTONIC);                const auto deadlineTimestamp = now + timeout.count();                const auto expectedVSyncTime = deadlineTimestamp + timeout.count();                mPendingEvents.push_back(makeVSync(mVSyncState->displayId, now,                                                   ++mVSyncState->count, expectedVSyncTime,                                                   deadlineTimestamp));            }        }

3.3  dispatchEvent方法把Vsync信號(hào)分發(fā)給消費(fèi)者

首先遍歷消費(fèi)者,調(diào)用postEvent進(jìn)行通知

void EventThread::dispatchEvent(const DisplayEventReceiver::Event& event,                                const DisplayEventConsumers& consumers) {     for (const auto& consumer : consumers) {            ...            switch (consumer->postEvent(copy)) {            }     }}

然后postEvent方法中,調(diào)用sendEvent進(jìn)行信號(hào)的發(fā)送

status_t EventThreadConnection::postEvent(const DisplayEventReceiver::Event& event) {   ...        auto size = DisplayEventReceiver::sendEvents(&mChannel, mPendingEvents.data(),                                                     mPendingEvents.size());    ...}

最終通過(guò)Socket的方法進(jìn)行信號(hào)的發(fā)送,接受者就是APP側(cè)了。

ssize_t DisplayEventReceiver::sendEvents(gui::BitTube* dataChannel,        Event const* events, size_t count){    return gui::BitTube::sendObjects(dataChannel, events, count);}

四.SurfaceFlinger端生產(chǎn)者

上面講到通過(guò)setVSyncEnabled方法去開(kāi)始或者結(jié)束獲取Vsync信號(hào)的操作。

4.1 獲取VSYNC信號(hào)

setVSyncEnabled方法如下:

void DispSyncSource::setVSyncEnabled(bool enable) {    std::lock_guard lock(mVsyncMutex);    if (enable) {        mCallbackRepeater->start(mWorkDuration, mReadyDuration);    } else {        mCallbackRepeater->stop();    }    mEnabled = enable;}

對(duì)應(yīng)的其實(shí)就是mCallbackRepeater的start和stop方法,其實(shí)現(xiàn)類(lèi)是DispSyncSource.cpp中的CallbackRepeater。

我們這里看到一個(gè)成員變量mWorkDuration,這個(gè)值其實(shí)就是控制Vscyn觸發(fā)時(shí)間的。這個(gè)我們后續(xù)小節(jié)再講,這里只是知道有這個(gè)值就好了。

4.2 把時(shí)間設(shè)置給Timer定時(shí)觸發(fā)

start方法中,記錄一下傳入的workDuration時(shí)間,然后傳遞給mRegistration處理。

void start(std::chrono::nanoseconds workDuration, std::chrono::nanoseconds readyDuration) {        std::lock_guard lock(mMutex);        mStarted = true;        mWorkDuration = workDuration;        mReadyDuration = readyDuration;        auto const scheduleResult =                mRegistration.schedule({.workDuration = mWorkDuration.count(),                                        .readyDuration = mReadyDuration.count(),                                        .earliestVsync = mLastCallTime.count()});           }

mRegistration的實(shí)現(xiàn)類(lèi)是VSyncCallbackRegistration,其中schedule方法也是交給VSyncDispatchTimerQueue來(lái)處理:

ScheduleResult VSyncCallbackRegistration::schedule(VSyncDispatch::ScheduleTiming scheduleTiming) {    if (!mValidToken) {        return std::nullopt;    }    return mDispatch.get().schedule(mToken, scheduleTiming);}

schedule方法中,進(jìn)行一系列的合法判斷,最終會(huì)交給 rearmTimerSkippingUpdateFor方法處理。

然后我們就可以看到rearmTimerSkippingUpdateFor中去調(diào)用setTimer方法去設(shè)置定時(shí)觸發(fā)。

rearmTimerSkippingUpdateFor方法略,

setTimer方法如下:

void VSyncDispatchTimerQueue::setTimer(nsecs_t targetTime, nsecs_t /*now*/) {    mIntendedWakeupTime = targetTime;    mTimeKeeper->alarmAt(std::bind(&VSyncDispatchTimerQueue::timerCallback, this),                         mIntendedWakeupTime);    mLastTimerSchedule = mTimeKeeper->now();}

則到了targetTime之后,就會(huì)執(zhí)行timerCallBack方法。

4.3 生成Vsync信號(hào)加入mPendingEvents

timerCallback方法如下:

void VSyncDispatchTimerQueue::timerCallback() {    struct Invocation {        std::shared_ptrcallback;        nsecs_t vsyncTimestamp;        nsecs_t wakeupTimestamp;        nsecs_t deadlineTimestamp;    };    std::vectorinvocations;    {        std::lock_guard lock(mMutex);        auto const now = mTimeKeeper->now();        mLastTimerCallback = now;        for (auto it = mCallbacks.begin(); it != mCallbacks.end(); it++) {            auto& callback = it->second;            auto const wakeupTime = callback->wakeupTime();            if (!wakeupTime) {                continue;            }            auto const readyTime = callback->readyTime();            auto const lagAllowance = std::max(now - mIntendedWakeupTime, static_cast(0));            if (*wakeupTime < mIntendedWakeupTime + mTimerSlack + lagAllowance) {                callback->executing();                invocations.emplace_back(Invocation{callback, *callback->lastExecutedVsyncTarget(),                                                    *wakeupTime, *readyTime});            }        }        mIntendedWakeupTime = kInvalidTime;        rearmTimer(mTimeKeeper->now());    }    for (auto const& invocation : invocations) {        invocation.callback->callback(invocation.vsyncTimestamp, invocation.wakeupTimestamp,                                      invocation.deadlineTimestamp);    }

這里的核心邏輯其實(shí)就是遍歷mCallbacks,然后分別回調(diào)。

那么mCallbacks是怎么添加的呢? CallbackRepeater創(chuàng)建的時(shí)候,回去注冊(cè) mRegistration,同時(shí)會(huì)傳入CallbackRepeater::callback方法作為回調(diào),所以mCallbacks其實(shí)就是CallbackRepeater::callback。

void callback(nsecs_t vsyncTime, nsecs_t wakeupTime, nsecs_t readyTime) {       ...        mCallback(vsyncTime, wakeupTime, readyTime);        ...    }

很明顯直接交給mCallback處理,所以我們又得看一下這個(gè)mCallback從何而來(lái)。

這個(gè)mCallback是CallbackRepeater創(chuàng)建時(shí)傳入的DispSyncSource::onVsyncCallback方法:

mCallbackRepeater =            std::make_unique(vSyncDispatch,                                               std::bind(&DispSyncSource::onVsyncCallback, this,                                                         std::placeholders::_1,                                                         std::placeholders::_2,                                                         std::placeholders::_3),                                               name, workDuration, readyDuration,                                               std::chrono::steady_clock::now().time_since_epoch());

所以,最終會(huì)調(diào)用到DispSyncSource::onVsyncCallback方法:

void DispSyncSource::onVsyncCallback(nsecs_t vsyncTime, nsecs_t targetWakeupTime,                                     nsecs_t readyTime) {    VSyncSource::Callback* callback;    {        std::lock_guard lock(mCallbackMutex);        callback = mCallback;    }    ...    if (callback != nullptr) {        callback->onVSyncEvent(targetWakeupTime, {vsyncTime, readyTime});    }}

又是回調(diào),這里很繞。這里的callback其實(shí)就是EventThread,仍然是在創(chuàng)建EventThread的時(shí)候設(shè)置的:

EventThread::EventThread(std::unique_ptrvsyncSource,                         android::frametimeline::TokenManager* tokenManager,                         InterceptVSyncsCallback interceptVSyncsCallback,                         ThrottleVsyncCallback throttleVsyncCallback,                         GetVsyncPeriodFunction getVsyncPeriodFunction)      : mVSyncSource(std::move(vsyncSource)),        mTokenManager(tokenManager),        mInterceptVSyncsCallback(std::move(interceptVSyncsCallback)),        mThrottleVsyncCallback(std::move(throttleVsyncCallback)),        mGetVsyncPeriodFunction(std::move(getVsyncPeriodFunction)),        mThreadName(mVSyncSource->getName()) {    LOG_ALWAYS_FATAL_IF(getVsyncPeriodFunction == nullptr,            "getVsyncPeriodFunction must not be null");    mVSyncSource->setCallback(this);    ...}

所以,終于可以看到盡頭了。最終其實(shí)就是調(diào)用到EventThread的onVSyncEvent方法:

void EventThread::onVSyncEvent(nsecs_t timestamp, VSyncSource::VSyncData vsyncData) {    std::lock_guardlock(mMutex);    LOG_FATAL_IF(!mVSyncState);    mPendingEvents.push_back(makeVSync(mVSyncState->displayId, timestamp, ++mVSyncState->count,                                       vsyncData.expectedPresentationTime,                                       vsyncData.deadlineTimestamp));    mCondition.notify_all();}

這里我們看到,會(huì)生成一個(gè)VSync信號(hào),加入到mPendingEvents集合中,并且發(fā)出通知,讓threadMain去獲取,從而完成了VSync信號(hào)的生產(chǎn)者流程。

畫(huà)了如下的surfaceFlinger結(jié)構(gòu)圖,方便理解(非完整版):

五.APP層收到信號(hào)進(jìn)行刷新

本章講的主要流程如下圖紅圈所示:

5.1 APP端接受流程

3.3小節(jié)中講到,SurfaceFlinger會(huì)通過(guò)BitTube的方式傳遞給APP側(cè)Vsync信號(hào)。發(fā)送vscyn信號(hào)的方法在DisplayEventReceiver.cpp中,而接收方法也在這個(gè)類(lèi)當(dāng)中。而具體調(diào)用方則是DisplayEventDispatcher.cpp中的dispatchVsync方法。流程如下圖所示:

5.2 dispathVsync分發(fā)流程

上面在handleEvent中,processPendingEvents獲取到了Vsync信號(hào)VsyncEventData后,交給dispatchVsync方法負(fù)責(zé)處理。

dispatchVsync(vsyncTimestamp, vsyncDisplayId, vsyncCount, vsyncEventData);

dispatchVsync方法的實(shí)現(xiàn)者是android_view_DisplayEventReceiver.cpp,如下:

void NativeDisplayEventReceiver::dispatchVsync(nsecs_t timestamp, PhysicalDisplayId displayId,                                               uint32_t count, VsyncEventData vsyncEventData) {    JNIEnv* env = AndroidRuntime::getJNIEnv();    ...    jobject javaVsyncEventData = createJavaVsyncEventData(env, vsyncEventData);    env->CallVoidMethod(receiverObj.get(), gDisplayEventReceiverClassInfo.dispatchVsync,                            timestamp, displayId.value, count, javaVsyncEventData);    ...}

我們可以看到,先是把VsyncEventData轉(zhuǎn)換為java可以接受的jobject對(duì)象,然后通過(guò)CallVoidMethod方法通知到j(luò)ava層中DisplayEventReceiver.java中的dispatchVsync方法。

5.3 java中流程流轉(zhuǎn)

首先DisplayEventReceiver中dispatchVsync方法被調(diào)用:

// Called from native code.    @SuppressWarnings("unused")    private void dispatchVsync(long timestampNanos, long physicalDisplayId, int frame,            VsyncEventData vsyncEventData) {        onVsync(timestampNanos, physicalDisplayId, frame, vsyncEventData);    }

該方法中直接調(diào)用onVsync方法,調(diào)用到Choreographer.java中FrameDisplayEventReceiver下的onVsync方法:

@Override        public void onVsync(long timestampNanos, long physicalDisplayId, int frame,                VsyncEventData vsyncEventData) {            try {                ...                if (timestampNanos > now) {                    timestampNanos = now;                }                if (mHavePendingVsync) {                } else {                    mHavePendingVsync = true;                }                mTimestampNanos = timestampNanos;                mFrame = frame;                mLastVsyncEventData = vsyncEventData;                Message msg = Message.obtain(mHandler, this);                msg.setAsynchronous(true);                mHandler.sendMessageAtTime(msg, timestampNanos / TimeUtils.NANOS_PER_MS);            } finally {                Trace.traceEnd(Trace.TRACE_TAG_VIEW);            }        }

onVsync方法中,主要判斷時(shí)間。如果timestampNanos>now,則是用當(dāng)前時(shí)間。所以還是以方法的調(diào)用時(shí)間為準(zhǔn)。然后通過(guò)handle轉(zhuǎn)發(fā)到主線(xiàn)程中執(zhí)行。

Message.obj=this,本身FrameDisplayEventReceiver又實(shí)現(xiàn)了Runnable接口,所以自然會(huì)執(zhí)行FrameDisplayEventReceiver下的run方法:

@Override        public void run() {            mHavePendingVsync = false;            doFrame(mTimestampNanos, mFrame, mLastVsyncEventData);        }

這時(shí)候我們就看到,執(zhí)行到了doFrame方法,而這個(gè)方法也是就是渲染流程的執(zhí)行者。

5.4 如何觸發(fā)handleEvent流程?

講到這里,你或許有個(gè)疑問(wèn),上面流程中,如何執(zhí)行到5.1中的handleEvent方法的呢?

主要是下圖所示的流程:

如果你斷點(diǎn)調(diào)試的時(shí)候,會(huì)發(fā)現(xiàn)下面所示的這個(gè)方法,竟然是主線(xiàn)程調(diào)用的:

DisplayEventReceiver.java // Called from native code.    @SuppressWarnings("unused")    private void dispatchVsync(long timestampNanos, long physicalDisplayId, int frame,            long frameTimelineVsyncId, long frameDeadline, long frameInterval) {        onVsync(timestampNanos, physicalDisplayId, frame,                new VsyncEventData(frameTimelineVsyncId, frameDeadline, frameInterval));    }

為什么用竟然呢?因?yàn)橐话銇?lái)看,應(yīng)該是子線(xiàn)程等待接受SurfaceFlinger的信號(hào),收到了信號(hào)后交給主線(xiàn)程處理,如果是主線(xiàn)程去等待,豈不是主線(xiàn)程阻塞了?

這里使用looper.addFd()方法,在該方法中,用到了一個(gè)epoll_ctl的機(jī)制,即對(duì)FD文件進(jìn)行監(jiān)聽(tīng),當(dāng)FD改變時(shí)觸發(fā)主線(xiàn)程的回調(diào)。如果處理完回調(diào)任務(wù),則會(huì)進(jìn)入epoll_wait的阻塞,繼續(xù)監(jiān)聽(tīng)。

六.擴(kuò)展問(wèn)題

問(wèn):高頻次請(qǐng)求vsync信號(hào),會(huì)突破60FPS的限制嗎?

答:不會(huì)。

首先ViewRootImpl中做了一層處理,哪怕16ms改變了很多View的布局,最終執(zhí)行到了scheduleTraversals方法時(shí),因?yàn)橛腥缦碌呐袛啵远贾粫?huì)執(zhí)行一次vsync信號(hào)的請(qǐng)求和注冊(cè)一次回調(diào),直至收到VSYNC信號(hào)。

void scheduleTraversals() {        if (!mTraversalScheduled) {            mTraversalScheduled = true;            mTraversalBarrier = mHandler.getLooper().getQueue().postSyncBarrier();            mChoreographer.postCallback(                    Choreographer.CALLBACK_TRAVERSAL, mTraversalRunnable, null);        }    }

取消限制:

void doTraversal() {        if (mTraversalScheduled) {            mTraversalScheduled = false;}

其次,2.2小節(jié)中講到,native請(qǐng)求VSYNC信號(hào)時(shí)也有一次限制,等到VSYNC信號(hào)時(shí)是不會(huì)再次發(fā)送請(qǐng)求的。

status_t DisplayEventDispatcher::scheduleVsync() {    if (!mWaitingForVsync) {        ...        status_t status = mReceiver.requestNextVsync();        ...        mWaitingForVsync = true;        ...    }    return OK;}

七.參考資料

https://www.jianshu.com/p/6083c590521b

https://www.jianshu.com/p/386bbb5fa29a //努比亞技術(shù)團(tuán)隊(duì)文章

八.聲明

1.本文是原創(chuàng),根據(jù)網(wǎng)上資料和閱讀ASOP的源碼之后得出的結(jié)論,如有問(wèn)題,歡迎指出。

2.圖中涉及到的流程圖如果想要高清大圖或者pos格式的原圖,可以私信我。

責(zé)任編輯:

標(biāo)簽:

相關(guān)推薦:

精彩放送:

新聞聚焦
Top 大香蕉国产手机在线观看| 日本女人牲交的视频| 亚洲国产精品午夜福利久久| 黄免费在线观看视频| 狠狠操狠狠操狠狠搞| 日韩中文字幕一级乱码在线亚洲| 国产最好看的特效大片av| 亲爱的请你原谅我 中文字幕| 精品久久久中文字幕熟女| 97人妻人人爱人人澡人人爽| 精品一区二区三区别视频| 男人把女人桶到爽午夜视频 | 九九热线这里只有精品| 亚洲91精选一区二区在线| 在线亚洲视频免费看| 日本午夜色视频在线观看| 国产97在线观看视频| 朴妮唛无删减福利在线观看| 亚洲va欧美va人人爽2| 一区二区三区水蜜桃视频| 人妻精品无码一区二区三区百花 | 中文字幕av不卡一区二区| 欧美日韩性生活视频在线| 人妻少妇精品视频专区专区| 偷怕自拍在线免费观看| 国产精品蜜臀在线观看| 黄色av网址免费观看| 天天射天天舔天天看| 99久久人妻精品免费②区| 成年人午夜网站在线播放| 又粗又硬又黄又色的| 富婆按摩高潮一区二区三区91| 欧美黑人一级性视频| 色五月婷婷综合国产在线| 日本欧美黄色网站免费| 亚洲一区二区嗯好爽快点| 日本aaaaa特黄| 50岁熟女乱综合一区二区| 91九色在线视频播放| 青青操一区二区三区| 超碰国产极品尤物在线| 制服中文丝袜国产日韩另类| 亚洲va欧美va国产综合定档| 天天干天天干天天操天天日| 欧美图区一区二区三区| 日本 高清 中文字幕| 亚洲在线视频一区二区| 一级黄色片特级黄色片| 日本精品一区二区三区不卡| 91超碰在线播放视频| 中文字幕激情亚洲精品| 国产精品久久乱码无人区| 在线观看免费视频网站色| 欧美 亚洲 国产 日韩一| 日韩精品视频啊啊啊| av蜜臀免费在线观看| 欧洲码亚洲码一区二区三区四区| 亚洲免费不卡一区二区三区| 国产日日夜夜精品视频免费| 在线步兵一区二区三区| 国产加勒比高清无码在线视频| 国产精品不卡在线播放| 免费在线观看成人激情视频| 91精选国产九色porny| 国内老熟妇精品露脸视频| 国产在线av免费观看| 欧美午夜理论片1000在线播放| 日本欧美黄色网站免费| 2019天天操天天日天天射| 欧美口爆吞精一区二区三区| 秋霞午夜鲁丝片午夜精品久| 91九色在线视频播放| 国产精品久久久久久无码不卡| 日本太黄视频免费看| 9999国产精品免费| 亚洲国产欧美日韩综合| 97人人澡人人添人人爽| av在线免费一区二区| 97超碰人人澡香蕉| 四季av在线一区二区三区| 蜜桃精品www视频在线观看| 亚洲av乱码国产精品观看麻豆 | 经典视频一区二区三区| 手机视频免费在线观看| 欧美亚洲日产国产综合| 亚洲 自拍 色综合图区av网站| 50岁老熟女高潮喷水了| 超碰97人妻中文字幕| 美女扒开腿让男人桶网站| 亚洲午夜激情视频在线播放| 人鱼小姐在线观看国语版字幕| 北岛玲在线播放中文字幕| 最新日韩成人av电影| 丰满熟妇人妻一区二区三区| 91久久久久精品一区二区三区| 日本熟妇三十熟女精品区| 国产精品8888在线观看| 人妻视频在线免费观看| 91九色成人原创视频| 黄色片网站国产精品| 中文字幕 av 在线| 粗大挺进朋友人妻身体里国产| 中文字幕在线观看一二三四| 国产av电影网毛片| 久久精品视频女人按摩| 久9热精品视频在线播放| 91精品国产在热久久| 亚洲AV永久青草无码士清品| 欧美老熟妇乱子伦视频在线观看 | 91大神长腿美女视频在线观看| 色情按摩XXXXXX视频| 青青草国产免费在线观看| 男人把女人桶到爽午夜视频| 国语自产免费精品视频一区二区| 午夜dj在线观看完整版| 日本激情在线看一区二区三区| 亚洲风情 国内自拍av| 国内人妻自拍视频在线| 在线观看免费的黄色片| 狼人 成人 综合 亚洲| 国产三级在线一区二区三区 | 中文av字幕在线观看| 动漫卡通一区二区三区| 欧洲码亚洲码一区二区三区四区| 国产精品视频中文无码| 日本一区二区三区高清在线| 男生捅女生逼的免费视频软件| 亚洲一区二区嗯好爽快点| 看全黄大黄大色大片美女| 亚洲最大av无码国产网址| 日本久道久久综合狠狠老| 中文字幕精品一区二区三区视频 | 凹凸视频这里只有精品| 国产加勒比精品蜜臀在线观看| beeg欧美丰满人妻| 午夜dj在线观看免费完整视频| 男女又黄又刺激a片免费| 亚洲码欧洲码在线观看| 97视频免费公开在线播放| 91极品尤物国产在线播放| 不戴胸罩的人妻电影| 午夜动漫福利在线观看| 免费一级特黄特色黄录像| 宅男视频在线观看视频| 亚洲综合一区二区在线视频| 欧美日韩精品亚洲欧美| 三级大尺度无码视频| 日韩欧美在线综合网高清| 欧美老熟妇在线一区二区三区| 黄色片在线免费观看日韩不卡| 啊啊啊啊在线视频观看| 视频一区二区在线观看视频 | 中文字幕 亚洲轻轻av| 日韩一级片黄色av| 在线视频播放免费网站| 久久精品乱码中文字幕| 亚洲情色在线视频播放| 邪恶老湿精品一区二区| 天天搡天天狠天干天| 啊!用力操我!好爽| 偷拍亚洲图片欧美另类| 伊人成人综合小说网| 欧美午夜理论片1000在线播放 | av黄片网站在线观看| 密乳一区二区三区国产亚洲av| 久久久久久久亚洲精品中文| 久久青草在线观看视频| 放荡的丝袜美腿护士老师| 50岁熟女乱综合一区二区| 欧美亚洲 自拍偷拍| 成年人在线观看福利视频| 亚洲专区 欧美日韩| 日本在线观看公司入口视频| 91九色免费在线观看| 亚洲国产精品久久久久秋霞1| 亚洲的国产中文字幕的av| 国产视频播放一区二区三区 | 最新97在线视频资源| 欧美视频免费在线看| 性色蜜月av一区二区三区| 成人污视频在线免费观看网址| 人妻熟妇久久久久久xxx| 美女啪啪啪免费网站视频| 色综合人妻中文字幕| 无套内射黑丝美女91| 富婆按摩高潮一区二区三区91| 偷拍亚洲图片欧美另类| 在线观看免费精品一区| 人妻少妇精品视中文字幕国语| 国产精品一线二线三区| 五月开心六月伊人色婷婷| 91精品一区二区三区蜜桃| 精品亚洲永久免费精品网站| 美女摸自己下面出白浆的视频| 成人av影视一区二区三区| 亚洲久久久久久久久| 亚洲精品一二三在线观看| 在线看不卡日本av| 最近最新高清欧美日韩中文字幕| 国产男女激情视频一区| 人妻少妇精品视频在线观看| 激情视频国产在线免费观看| 国产 欧美 五月 激情| 成人网视频欧美在线观看| 国产成人自拍精品在线| 天天草天天日天天舔| www人妻一区二区| 欧美的一区二区三区| 成人av在线播放老熟妇| 插美女阴道流水视频| 欧美色高清vvvvvv| 日本高清一级二级三级| 丰满老熟女av在线| 大香蕉久久久久久久久| 少妇花园流浆嗯嗯张开视频| 亚洲校园~春色综合| 97 在线观看视频网站| 日产精品免费一区二区三区 | 一级毛片试看三分钟| 国产午夜精品1区2区3区| 日本黄色录像第1部播放器播放| 一区二区三区水蜜桃视频| 131美女午夜免费视频| 天天爱天天做天天舔| 日本少妇的秘密视频| 日本女人牲交的视频| 国产主播在线观看一区二区| 日本亚洲美女视频一区| 99久久国产亚洲精品| 国产精品国产三级区别第一集| 91激情视频在线视频| 日韩视频在线观看四区| 动漫黄网站在线观看| 色视频网在线视频观看| 日韩视频在线观看四区| 在线成人中文字幕网站| 国产精品免费观看91| 爱妃视频av一区二区| 九九热线这里只有精品| 国产欧美亚洲精品第一页青草| 啪啪啪1000国产精品| 把鸡鸡伸进去的视频| 亚洲一级中文字黄色片| 日韩级视频在线播放| 日本亚洲综合伊人久久| 国产av电影网毛片| 亚洲午夜短视频在线| 免费观看黄片视频91| 蜜臀av在线地址一地址二| 一卡二卡成人久久精品| 欧美三级不卡不毒视频| 九色91在线只有精品| 黑人久久一区二区三区| 视频在线免费观看97| 蜜桃亚洲av优女av综合久久久| 大香蕉手机免费在线| 日本久道久久综合狠狠老| 亚洲人成网站在线播放| 东京一区二区三区av在线| 国产55夜色66夜色男人的天堂| 伊人成人综合小说网| 青青国产成人在线看| 人妻蜜臀久久久av免费| 深夜释放成人污污污| 蜜桃视频app网站入口| 久久久久久久久久二区| 亚洲综合熟女久久30p| 在线一区三区精品视频| 秋霞网av一区二区三区中文字幕| 91激情视频在线视频| 五十六十日本老熟妇牲| 欧美另类视频第二页| 在线精品亚洲欧美日韩| 熟女老骚91porn九色| 好紧好湿好爽好大A视频| 91大神长腿美女视频在线观看| 亚洲 欧美视频在线| 中文乱码字幕人妻精品| 日本成年人大片免费观看| 中文字幕欧美人妻精品精品| 国产福利小视频在线免费观看 | 激情视频国产在线观看| 大香蕉手机免费在线| 国产女人AAA级久久久级| 在线观看国产区一区二| 在线免费观看亚洲v| 蜜臀av在线观看一区| 77字幕网77中文字幕| 99久久国产亚洲精品| 忘忧草精品久久久久久久高清| 国产免费观看av在线| 水蜜桃在线视频一区二区三区| 9久久久久久久久久久| 99热在线这里只有精品| 一区二区三区水蜜桃视频| 看全黄大黄大色大片美女| 国产精品自产拍在线观| 亚洲欧美清纯另类图片小说| 91综合久久久久久久久久久| 91热精品视频在线播放| 国产亚洲精品久久久久久电影| 亚洲另类校园春色小说| 男人天堂2017在线| 91久久精品视频地址| 国产av国片精品jk制服| 中文字幕日韩一二区| 99成全re视频免费观看在线看| 青青草手机免费在线视频| 精品国精品国自产在产国产| 人妻少妇麻豆中文字幕久久精品| 91精品国产在热久久| 男生和女生哪个更色| 亚洲天堂av在线免费看| 亚洲国产av自拍网站| 日韩一二区内射电影| 啪啪啪在线免费视频| 国产精品久久久免费99| 日本久久久久久久久人妻视频| 91免费一区二区久久| 中文字幕人妻丝袜二区av| 91九色在线视频入口| 人妻出轨av中文字幕| 中文字幕a区一区三区| 性美女毛片久久a区| 黄色av观看一区二区三区| 亚洲精品在线免费观看视频| 国产成人18黄网站免费观看| 精品一区二区三区最新| 日韩一区=区三区四区| 日本在线观看公司入口视频| 中国黄页毛片免费视频| 性美女毛片久久a区| 午夜美女直播福利视频| 日韩毛片免费视频观看| 中文字幕人妻丝袜二区av| 久久久精品国产亚洲av水| 好吊一区二区三区视频| 一本久道久久综合狠狠躁| 忘忧草精品久久久久久久高清 | 50岁熟女乱综合一区二区| 午夜国产精品福利一二| 69久久夜色精品国产69| 色 小说 激情 图片| 国产精品久久久久久久综合av| 亚洲最大第八色在线视频| 视频一区 欧美情色| 人妻少妇麻豆中文字幕久久精品| 日本一道免费一二三区| 亚洲校园~春色综合| 草莓视频精品在线观看| 18免费1000视频国产| 人妻斩43r熟女人妻| 99在线只有精品视频| 久久人人添人人爽添人人片va| 在线观看欧美日一区二区 | 丝袜美腿一区二区三区jk| 91久久久久精品一区二区三区| 国产精品国产自产拍在线| 51国精产品一区二区三| 老鸭窝最新在线视频| 91新视频在线免费观看| 亚洲av日韩美aⅴ| 日韩精品免费人成视频| 色屁屁一区二区三区视频国产| 亚洲情色欧美日韩在线| 免费观看男人操逼的操女人的| 久久97久久97免视看| 蜜臀av在线观看一区| 久亚洲aⅴ一区二区三区写真| 91黄色大全免费观看| 午夜久久在线观看视频| 97久久超碰成人精品网页91| 91手机免费在线视频| 最新69视频在线观看| 视频一区二区亚洲欧美| 天天爱天天插天天射| 成人av网站在线观看| 午夜狠狠干在线视频| 在线观看欧美日一区二区 | 天堂av中文官网在线| 免费在线视频 中文字幕| 男人插女人逼视频播放| 午夜小视频免费在线| 亚洲中字幕日产AV片在线| 忘忧草精品久久久久久久高清| 亚洲一区二区蜜乳av| 91精品在线观看视频| 日本一区二区伦理在线观看| 在线观看免费的黄色片| 国产精品v欧美精品v亚洲精品| 国产精品免费观看av| 亚洲免费在线观看,| 国产美女在线极品美女网站| 日本一区二区三区综合网| 精品色欲久久久青青青人人爽| 365日日夜夜精品视频| 午夜伦理在线在线观看视频| 久久久久久久久久99蜜桃| 亚洲熟女少妇 精品| 在线观看的a站视频| 可以在线观看的av网站| 精品日产一匹二匹三匹四匹五匹| 精品少妇人妻大乳av| 日韩免费一卡二卡三卡四卡五卡| 亚洲综合熟女久久30p| 国内偷拍视频在线观看| 欧美国产一区二区三区| 99热精品夜夜爽伊人| ntr人妻セックス在线| 亚洲国产成人爱av网站| 国产99热这里有精品| 欧美三级不卡在线播放 | 亚洲天堂av影视在线| 中文字幕熟女人妻丝袜电影| 五月天色婷婷亚洲欧美| 亚洲av永久无码精品尤物| 国产亚洲高清视频精彩在线播放| 免费一级特黄特色黄录像| 亚洲清纯国产com| 老司机福利社免费视频| 性色av一区二区三区咪爱四| 50岁熟女乱综合一区二区| 亚洲男人平均性生活时间| 深夜释放成人污污污| 一区二区三区高清在线| 99久久国产亚洲精品| 国产精品久久久免费99| 亚洲av乱码一区二区三区四区| 91日本av在线观看| 国产精品剧情在线视频| 男女上下差差发哈插插插| 在线步兵一区二区三区| 168黄页网免费观看视频| 少妇花园流浆嗯嗯张开视频| 一区二区三区视频直播| 在线免费观看亚洲v| 免费在线视频 中文字幕| 亚洲久久久久久久久| 自拍偷拍国产欧美精品| 亚洲综合在线蜜臀av| 亚洲国产成人久久无码| 亚洲精品一区二区三区av| av蜜臀免费在线观看| 国产精品大片在线观看网站资源| 精品视频在线观看剧情| 美女福利在线免费观看| 国产最好看的特效大片av| 亚洲一区二区嗯好爽快点| 又大又黄又粗又爽少妇毛片| 男人的天堂av 色噜噜| 有故事情节的美女免费日逼视频| 成年女女子免费视频播放| 国产精品无码一区二| 97视频免费公开在线播放| 狼人 成人 综合 亚洲| 91九色在线视频入口| AV成人国产免费久久精品| 亚洲熟女资源一区二区| 美女福利在线免费观看| 91精品久久久久久久免费看| 亚洲男人平均性生活时间| 熟女人妻 在线观看| 啊!用力操我!好爽| 中国精品视频在线观看一区二区| 欧美成人免费观看在线看| 国产呻吟揉丰满一区三六区| 操骚逼啊啊啊叫一区二区三区| AV成人国产免费久久精品| 日韩黄色a影视在线免费观看网站| 欧美午夜免费福利视频| 男人把女人桶到爽午夜视频| 亚洲情色在线视频播放| 91在线精品一区二区毛片| 国产男女激情视频一区| 亚洲mv在线免费观看| 中文字幕丰满人妻fsdss| 日本伊人中文字幕在线| 乱色熟女综合一区二区三区四| 在线观看免费精品一区| 亚洲的国产中文字幕的av| 天天草天天日天天舔| 国产91边对白在线播放| 午夜天堂网在线观看资源网站| 中文字幕=中文字幕| 天天操天天摸天天添| 精品一区二区三区视频观看| 免费一级特黄特色黄录像| 丰满老熟女av在线| 91久久精品视频地址| 日韩精品久久日日躁夜夜躁| 草草影院色视频免费在线观看| 亚洲地址一区二区三区四区 | 不戴胸罩的人妻电影| 人妻少妇资源网av| 欧美熟妇激情在线观看| 亚洲天堂av影视在线| 精品国产不卡在线观看免费| 国产在线av免费观看| 三级大尺度无码视频| 久久精品视频2015| 超碰国产极品尤物在线| 中文字幕a区一区三区| 亚洲精品久久中文字幕| 蜜臀av在线观看一区| 放荡的丝袜美腿护士老师| 97人妻人人爱人人澡人人爽| 老司机带带我视频完整版| 欧美在线中文字幕第一页| 经典视频一区二区三区| 亚洲熟女毛茸茸上厕所尿尿| 手机在线看日韩av资源| 欧美一级特黄大片做受日本| 国产午夜精华视频在线| 粗大挺进朋友人妻身体里国产| 亚洲码欧洲码在线观看| 巨大屁股女教师极品白嫩少妇| 经典视频一区二区三区| 东京一区二区三区av在线| 8x8x国产在线观看一区二区| 美日韩黄色一级视频| 男人的天堂av 色噜噜| 老鸭窝最新在线视频| 美女爽爽午夜作爱视频1314| 亚洲人妻一区二区三区久久精品| 亚洲国产精品日韩综合网| 人妻蜜臀久久久av免费| 久久久亚洲av成人网人人| 亚洲天堂啪啪爱之巢穴| 久亚洲aⅴ一区二区三区写真| 公交车人妻免费视频| 午夜dj在线观看免费完整视频| 亚洲欧美专区一区二区三区| 成人欧美网站免费直接看| 91九色黑丝长腿美女| 日韩一二三区免费播放视频| 国产美女在线极品美女网站 | 国产青青自拍视频在线观看看| 成人在线中文字幕日韩| 亚洲码欧洲码在线观看| 人妻精品无码一区二区三区百花| 国产午夜精品人妻中文字一幂| 免费在线观看成人激情视频| 日本欧美黄色网站免费| 美女厕所撒尿偷拍视频| 在线人妻中文av导航| 国产精成人品一区久图片| 亚洲风情 国内自拍av| 天天干天天插天天透| 91精品久久久久久久99蜜臀| 中文字幕熟女人妻丝袜电影 | 国产精品一级片免费看| 人妻熟妇中文字幕免费视频| 自拍偷拍国产欧美精品| 亚洲校园~春色综合| 男人午夜视频在线观看| 天天操日日干夜夜操| 91大神长腿美女视频在线观看| av一区二区在线播放色婷婷精品| 日韩毛片免费视频观看| 欧美码一二三区线观看| 三级黄色在线播放网站| 天堂av在线一区少妇| 国产成年女人在线观看| ww久久久久国产喷水18禁| 一区二区三区高清在线| 国产成年人性生活视频| 免费观看亚洲女同性恋一区二区| 欧美熟妇激情在线观看| 人妻熟女–第2页–无名网| 91九色黑丝长腿美女| 91九色成人原创视频| 日韩精品久久日日躁夜夜躁| 日本少妇一二三视频| 欧美亚洲自拍偷拍xxx| 中文av字幕在线观看| 99精品国产九九国产精品| 午夜小视频免费在线| 狂野欧美激情性xxxx| 四季亚洲中文专区av| 视频一区二区在线播放| 久久亚洲av午夜福利精品一区| 日本亚洲美女视频一区| 内地伦理片在线免费观看播放| 久久精品日产第一区二区三区| 2025中文字幕在线| 99精品一区在线观看| 日韩欧美激情啪啪啪| 激情91久久婷婷综合| 天天综合网精品视频天天看| 日本二区三区精品免费| 亚洲熟女少妇 精品| 蓝莓小视频在线观看| 国产人妖综合在线视频| 亚洲av天堂av在线| 亚洲情色成人一二三区| 日本在线观看公司入口视频| 365日日夜夜精品视频| 东京一区二区三区av在线| 可以免费看黄色的网址| 九一欧洲国产无码在线| 国产手机av免费在线看片不卡| 国内在线精品视频在线观看| 高潮少妇高潮久久精品99| 国产加勒比精品蜜臀在线观看| 伊人激情综合视频网| 亚洲图片 欧美专区 自拍| 美女被插免费视频网站| 无套内谢少妇一二三四| 50岁熟女乱综合一区二区| 卡通动漫中文字幕在线观看| 大香蕉网成人在线观看| 国产91手机精品在线播放| 中文字幕亚洲天堂av在线| 亚洲国产香蕉碰碰人人| 91在线精品一区二区毛片| 91av在线网址观看| 久久久久一区二区三区四区 | 忘忧草精品久久久久久久高清| 成人区人妻精品一区二区不卡蜜臀| 激情视频国产在线免费观看| 美女和猛男诱惑操逼捅鸡鸡| av色综合久久天堂av…| 麻豆免费成人小视频| 日本va欧美va国产综合va| 日本特黄免费一级大片| 天天插天天舔天天日| 成人av黄片免费在线观看专区| 欧美日韩精品免费看| 中文热免费在线视频| 亚洲mv在线免费观看| 99精品午夜一区二区三区| 巨大屁股女教师极品白嫩少妇| 欧美丝袜办公室在线91| 欧美 亚洲 国产 日韩一| 99在线只有精品视频| 777精品久久久久久久| 爱毛片在线成人免费看| 蜜桃系列一区二区观看| av在线视频观看免费| 最新日韩成人av电影| 1234中文字幕内射在线| 日韩人妻无码一区2区3区| 在线人妻中文av导航| 欧美色高清vvvvvv| 91热精品视频在线播放| 亚洲最大av无码国产网址| 日本xxxxx久久| 最近的中文字幕一区二区| 少妇喷水视频在线观看| 欧美亚洲国产第一二区| 免费观看黄色视频啊小穴啊| 99久久99久久综合| 人妻出轨av中文字幕| 亚洲人成网站在线播放| 中文字幕精品无码一区二区三区| 欧美视频一区二区三区三州| 日韩人妻无码一区2区3区| 小岳母在线观看完整版| 日本jizzjizz少妇| 亚洲高清码在线精品av| 淫色网亚洲av日韩av| 中文字幕在线aⅴ免费观看| 蜜臀国产精品久久久久久| 97人人添人躁人人爽超碰| 亚洲欧美日本高清在线观看| 男女啪啪视频免费国产| 最近的中文字幕第二页| 国产福利一区二区三区久久久 | 男人操女人逼视频免费| 加勒比日本一区二区三区| 亚洲伊人第一综合网| 亚洲一区二二三区在线gk| 天天玩天天摸天天舔| 中文字幕人妻免费电影| 在线视频成人青青草久热| 草草影院色视频免费在线观看| 国产亚洲av网址大全| 在线播放三级黄色日韩av| 人妻精品无码一区二区三区百花| 亚洲日韩色欧另类欧美色吊丝| 91精品久久久久久久99蜜臀| 精品人妻熟女a62v久久| 熟女俱乐部五十路 六十路| 中文字幕成熟丰满人妻| 99久久精品岛国免费黄色网| 8x8x国产在线观看一区二区| 天堂av在线一区少妇| 超级黄的有肉视频在线观看| 久久久精品欧美一区二| 日本久久久久久久久人妻视频| 国产主播在线露脸观看| 97视频免费观看一区| 天天干天天干天天操天天日| 99热在线都是精品免费| 亚洲另类校园春色小说| 亚洲欧美日本高清在线观看| 漂亮人妻视频免费在线播放| 欧美一点不卡视频在线观看| 一区二区三区精品久久人妻| 亚洲熟妇少妇一区二区| 黄免费在线观看视频| 欧美成在线在线视频| 亚洲熟女国产午夜精品| 男女啪啪自拍露脸视频| 97精产国品一二三产区区| 日韩午夜福利三级经典| 国产九色视频在线观看| 亚洲av乱码一区二区三区四区| 粉嫩玉足夹茎视频在线看| 午夜无码精品一区二区三区| 操女人逼逼好爽啊操| 精区一品二品精区在线91| 在线免费观看精品一区| 乱色熟女综合一区二区三区四| caoporn97超碰| 久久人人妻人人做人人爽涩爱| 亚洲第一视频在线视频| 日本激情在线看一区二区三区| 免费一区二区三区香蕉| 天天操日日干夜夜操| 国产91福利在线导航| 少妇视频播放在线播放免费观看 | 粉嫩玉足夹茎视频在线看| 日韩一二三区免费播放视频| 可以在线观看的av网站| 黄色av网址免费观看| 桃子av在线免费观看| 天天操日日干夜夜射| 2017在线免费观看中文a| 亚洲中文精品第一页| 欧美人妖一区二区三区| 天天干天天插天天透| 黄色av观看一区二区三区| 欧美18vide0sex性极品| 大香线蕉视频在线观看75| 欧美三级不卡不毒视频| 日本少妇人妻xxxxx16| v888av精品少妇| av亚洲欧美一区二区| 日日夜夜操国产av| 日韩少妇中文字幕一区| 91超碰在线播放视频| 香蕉视频免费看国产精品| 在线观看免费视频网站色| 国产免费自拍视频精选| 亚洲天堂av成人在线观看| 欧美一卡二卡3卡4卡无卡十| 深夜福利成人在线观看| 精品亚洲永久免费精品网站| 国产午夜精品人妻中文字一幂| 国产在线观看XXXXX| kendralust熟女少妇| 国产日韩欧美高清无网码| 亚洲国产成人精品久久久久久久久 | 日产国产亚洲精品系列p| 日韩欧美精品熟妇视频播放| 男插女下面真人视频| 9999精品久久久久| 亚洲国产自拍偷拍精品| 日本欧美视频免费观看| 99热在线都是精品免费| 日本成年人大片免费观看| 在线视频 中文字幕 一区二区| 中文字幕av影片免费在线观看| 青青国产的视频在线播放| av完整版在线播放| 日本一区二区三区高清在线| 国产自拍福利视频在线观看| 97人妻少妇熟女av| 99精品一区在线观看| 日本不卡网在线观看视频| 一区二区在线欧美日韩中文| 亚洲情色成人一二三区| 九色91在线只有精品| 最新欧美一级特黄大片| 亚洲天堂av成人在线观看| av黄片网站在线观看| youjizzcom精品少妇| 精品视频在线观看剧情| 最新69视频在线观看| 最新黄色天堂av在线资源| 91在线观看青青超碰| 亚洲午夜短视频在线| 亚洲国产香蕉碰碰人人| 天天射天天舔天天看| 精品在线观看一区二区视频| 成人av中文字幕网址| 99在线只有精品视频| 日本mm一区二区三区高清| 中文字幕熟女人妻丝袜电影| 国产福利一区二区三区久久久 | 9l视频自拍九色9l视频不卡| 精品黄色一级久久久久久久久 | 欧美成人免费观看在线看| 日韩午夜福利三级经典| 欧美成在线在线视频| 伊人国产精品成人在线| 91精品国产99久久| 中文字幕中文有码在线精品| 午夜一分钟视频免费在线观看| 亚洲情色成人一二三区| 精华液一区二区区别| 欧美口爆吞精一区二区三区| 久久久亚洲av成人网人人| 日本性生活视频观看免费| 日本久道久久综合狠狠老| 亚洲人成在线1国产盗拍| 日韩欧美免费看的惊悚片电影| 日本激情在线看一区二区三区| 四房波波-五月天-四房波波| 国产一区二区精品调教| 亚洲欧美三级在线观看视频| 亚洲国产精品日韩综合网| 四房波波-五月天-四房波波| 亚洲国产伦理久久精品| 九九热线这里只有精品| 把鸡鸡伸进去的视频| 99精品国产九九国产精品| 亚洲中文字幕综合av一区| 最近最新高清欧美日韩中文字幕| 999久久久91一区二区| 欧美日韩一区二区a∨视频| 又粗又硬又黄又色的| 国产剧情传媒av在线| 老鸭窝大视频网站a一级| 精品久久久福利国产| 中文字幕在线观看操穴视频| 青青操在线超碰传媒| 日本午夜色视频在线观看| 久久精品乱码中文字幕| 玩弄人妻少妇精品视频在线| 91超碰在线免费播放| 韩国美女视频在线观看18+| 精品成人一区二区三区四区影视| 亚洲久久久久久久久| 老外插美女在线视频| 加勒比人妻av系列专区| 欧美欧美欧美欧美欧美欧美| 日韩不卡免费一区二区三区视频 | 日本人妻偷人妻中文字幕| 亚洲av综合在线观看免费| 免费高清视频亚洲熟女| 在线能看的网站你懂得| 99精品国产中文字幕| 在线观看的a站视频| 天天摸天天舔天天透| 四十路の五十路熟女网址| 欧美美女色视频免费看| 国内偷拍视频在线观看| 天天搡天天狠天干天| 可以在线观看的视频你懂的| 精区一品二品精区在线91| 免费在线观看成人激情视频| 人妻 日韩 欧美 综合 制服| 91精品久久久久久久免费看| 一区二区三区视频直播| 77777色婷婷av一区二区三| 国产精品无码一区二| 午夜无码精品一区二区三区 | 凹凸视频这里只有精品| 久久精品亚洲一区二区三 | 青青操在线超碰传媒| 国产91边对白在线播放| 蜜桃精品www视频在线观看| 333kkkk·com99久久| 亚洲一区二区三区在线直播| 4438x视频在线| 自拍偷拍在线福利视频| JK白丝喷白嫩嫩久久久| 91人妻porny精品国产| 亚洲一级中文字黄色片| 欧美色视频日本片免费看| 国产高清 国产av| 9999国产精品免费| 中文字幕亚洲情色在线观看| 中文字幕一区二区720p| 黄色的视频黑丝网站| 97视频免费观看一区| 国产精品va在线观看老妇女| 国产91福利在线导航| 69视频永久免费观看| 国产精品免费观看91| 三级视频欧美视频亚洲视频| 亚洲av蜜臀在线观看| 免费av在线亚洲精品| 亚洲91精选一区二区在线| 淫色网亚洲av日韩av| 日本午夜色视频在线观看| 日本欧美黄色网站免费| 把鸡鸡伸进去的视频| 中文字幕成熟丰满人妻| 丝袜 制服 国产 欧美 日韩| 黄色片在线免费观看日韩不卡| 亚洲熟女资源一区二区| 女人的小鸡鸡真人免费视频 | 成年视频短视频在线播放| 精品麻豆国产综合在线9| 国产女主播av在线播放观看| 中文字幕人妻免费电影| 九色91蝌蚪porn| 91popny熟女九色| 在线观看国产区一区二| 91九色黑丝长腿美女| 亚洲国产av自拍网站| aaa夜夜夜精品视频| 亚洲一区二二三区在线gk| 2021久久国自产拍精品| 天天色天天操天天色综合| 欧美色高清vvvvvv| 日本亚洲综合伊人久久| 成年女女子免费视频播放| 91在线精品一区二区毛片| 8x8x国产在线观看一区二区| 91超碰在线免费播放| 趣夜视频在线免费观看| 国产午夜精品在线播放| 国产交换乱淫99视频| 人妻少妇精品视中文字幕国语| 视频一区 欧美情色| 免费高清视频亚洲熟女| 亚洲图片 欧美专区 自拍| 国内精品视频免费观看视频| 中文字幕日韩一二区| 国产精品综合自拍第一页| 免费可以看黄页的视频| 中文字幕av一区二区三区不卡| 黑人久久一区二区三区| 亚洲av在线观看久久久| 国产午夜精华视频在线| 大屁股熟女少妇一区二区| 亚洲欧美激情人妻人妻综合| 亚洲图片 欧美专区 自拍| 日本国产福利视频在线观看| 一区二区三区日韩高清| av男人天堂网在线观看| 亚洲av最新资源在线| 中文字幕激情亚洲精品| 国产中文字幕88av| 国产亚洲精品视频久久久| 狂野欧美激情性xxxx| 国产精品一线二线三区| 日本欧美视频免费观看| 999精品视频免费看| 瑟瑟视频在线网站免费观看| 欧美大香蕉一区二区三区| 91精品丝袜人妻久久久久久| 青青草毛片在线观看| 亚洲熟女毛茸茸上厕所尿尿| 日本一区二区三区成人| 日日日日日日日夜夜夜夜夜| av大片免费观看网站| 玩弄放荡人妻少妇免费视频| 啊啊啊啊在线视频观看| 午夜福利92一区二区三区久久| 狼人 成人 综合 亚洲| 麻豆传媒视频区一区二| 亚洲视频资源在线播放| 午夜无码精品一区二区三区| 大鸡吧淫水四射视频| 色情按摩XXXXXX视频| 天堂av2025一区| 成人午夜福利视频镇东影视| 365日日夜夜精品视频| 熟女人妻av完整一区二区三区| 精品久久久免费av| 欧美午夜理论片1000在线播放 | 秋霞网av一区二区三区中文字幕| 一区二区三区水蜜桃视频| 一区二区三区精品久久人妻| 色偷偷欧美男人的天堂| 在线免费观看亚洲v| 日日日日日日日夜夜夜夜夜| 男女上下差差发哈插插插| 日本亚洲综合伊人久久| 国产一区二区三区在线资源| 亚洲精品日韩中文久久91| 涩爱av一区二区在线播放视频| av大片免费观看网站| 手机看日韩av大片| 色狠狠久久vs北条麻妃av| 亚洲日韩色欧另类欧美色吊丝| 午夜狠狠干在线视频| 亚洲综合在线一区二区三区四区| 精品一区二区三区最新| 亚洲人妻无吗中文字幕| 国产av剧情网址大全| 中文字幕人妻丝袜二区av| 老太熟妇乱淫aaaaa片免费| 中文一区二区在线播放| 黄片一级黄片一级黄片| 黄色古装操逼小视频| 亚洲熟女资源一区二区| 日本一道免费一二三区| 亚洲图片偷拍30pxxx| 中文字幕久久五月天| 亚洲另类视频图片小说| 三级大尺度无码视频| 91tsav人妻国产| 日本在线观看视频黄大片www | 91久久美利坚合众国保护| 久久亚洲av午夜福利精品一区| 国内精品视频免费观看视频| 少妇丰满一区一二区视频社区| 最近2019日本中文字幕| 黑人中出日本人妻系列| 老头插进去好多水'视频| 国产av剧情网址大全| 1234中文字幕内射在线| 99国产热精品在线观看| 中文字幕亚洲情色在线观看| 午夜无码精品一区二区三区| 国产精品免费观看av| 亚洲图片 欧美专区 自拍| 天天操,天天射,天天日| 国产免费午夜精品视频| 日本丰满少妇毛茸茸| 男人午夜视频在线观看| 99via精品福利影视| 男生殖器插女生殖器视频欧美| 免费国产一区二区三区在线播放| 插屁眼在线免费视频| 国产美女在线极品美女网站 | 国产精品国产三级区别第一集| 中文一区二区在线播放| 天堂av在线一区少妇| 午夜美女直播福利视频| 大胸美女黄网站色片大全亚洲| 熟女视频一区二区在线观看| 熟女人妻伊人蜜桃视频| 亚洲国产精品久久久久秋霞1| 国产精品自拍视频网站| 九色91蝌蚪porn| 91网在线视频中文字幕| 国产精品久久久免费99| 亚洲最大的中文字幕在线| 成人中文字幕在线高清 | 精品久久久中文字幕熟女| 亚洲情色欧美日韩在线| 国产97在线观看视频| 国产免费观看av在线| 可以免费直接观看的av| 中文字幕日韩一二区| 在线 国产区 视频| 国产加勒比高清无码在线视频| 国产精品制服诱惑丝袜的| 欧美人妖一区二区三区| av亚洲天堂中文字幕| 91福利在线观看免费| 9i精品福利一区二区三区蜜桃| 青娱乐休闲在线观看视频| 蜜桃人妻av2023| 天天看天天舔天天摸| 精品人妻天天爽夜夜爽| 国产欧美亚洲精品第一页青草 | 日韩欧美免费看的惊悚片电影| 人鱼小姐在线观看国语版字幕| 精品国产污污污免费网站入口| 精品熟妇丰满人妻视频| 手机视频免费在线观看| 超碰av在线一区二区三区| 粉嫩玉足夹茎视频在线看| 日韩人妻无码一区2区3区| 亚洲av丝袜诱惑在线| 午夜伦理在线在线观看视频| 欧美区一区一区三区| 午夜国产精品福利一二| 青青操在线超碰传媒| 性色蜜月av一区二区三区| 日韩人妻少妇av电影| 推荐国产福利一区二区三区| 九九re热这里只有精品视频 | 青青草大伊视频免费观看| 欧洲老妇人一区二区三区| 国产日日夜夜精品视频免费| 91青青青青艹视频在线观看| 中文热免费在线视频| 国产成年女人在线观看| 美女福利在线免费观看| 人妻一区二区三区中文字幕免费| 国产午夜精华视频在线| 中文字幕亚洲精品八区| 一级视频在线观看高清国产免费| 亚洲天堂av在线免费看| 91久久美利坚合众国保护| 在线成人中文字幕网站| 成人av网站在线观看| av中文字幕 中文字幕第一页| 亚洲人妻一区二区三区久久精品| 可以在线观看的av网站| 台湾性dvd性色av| 一区二区三区四区无人区| 毛片中文aaa五月天| 老外插美女在线视频| 欧美成人性生活一级片| 天天插天天干天天爽| 熟女老骚91porn九色| 青青草视频在线观看播放影院免费| 91日本av在线观看| 国产成年无码av片在线| 天天干天天插天天透| 欧美国产亚洲自拍偷拍| 中文字幕=中文字幕| 国产大屁股影音在线播放| 国产三级在线一区二区三区 | 亚洲综合在线一区二区三区四区| 韩国美女视频在线观看18+| 日本一卡不带卡的视频| 不戴胸罩的人妻电影| 久久97久久97免视看| 韩国女主播一区二区福利视频| 一本v亚洲v天堂一区二区| 激情91久久婷婷综合| 国产精品亚洲精品久| 亚洲综合精品天堂丁香芒果| 亚洲一区二区蜜乳av| 国产一级特黄aaa片做受小说| 男人的鸡插入美女的小穴| 色少妇精品一区二区三区网站 | 精品黄色一级久久久久久久久 | 国产成人自拍在线播放| 美女被插免费视频网站| 亚洲精品av成人在线观看| 人妻出轨av中文字幕| 免费一级特黄特色黄录像| 日本亚洲美女视频一区| 亚洲中文字幕综合av一区| 亚洲精品欧美日韩专区免费| 久久久久久久亚洲精品中文| xxxxxx日本少妇| 天天日天天爱天天玩| 色屁屁一区二区三区视频国产| 777精品久久久久久久| 91精选国产九色porny| 国产av国片精品jk制服| 大香蕉手机免费在线| 欧美一区二区三区视频在线观看| 北岛玲在线播放中文字幕| 丰满熟妇人妻一区二区三区| 亚洲欧美清纯另类图片小说 | 亚洲图片 欧美专区 自拍| 放荡的丝袜美腿护士老师| 亚洲最新欧美偷拍视频| 青青草视频在线观看播放影院免费| 在线步兵一区二区三区| 漂亮人妻口爆深喉免费视频| av色综合久久天堂av…| 中文字幕欧美人妻精品精品| 国产主播av在线观看| 国产福利小视频在线免费观看| 在线免费观看国产欧美日韩| 精品日产一匹二匹三匹四匹五匹| 弄爽新婚人妻第五部美妙人妻| 无码丝袜人妻高跟鞋| 国内亚洲一区二区视频| 欧美三级不卡不毒视频| 色情按摩XXXXXX视频| 鲁死你资源站亚洲av一级aⅴ| 人视频一区二区三区| 日本欧美黄色网站免费| 99精品午夜一区二区三区| 漂亮人妻口爆深喉免费视频| 一色桃子av人妻熟女完整版| 免费观看亚洲欧洲在线视频| 成年视频短视频在线播放| 深夜释放成人污污污| 亚洲熟妇色xxxxx妇色| 国产午夜精品在线播放| 999精品欧美一区二区三区黑人| 漂亮人妻久久被公侵犯| 娇小型av优女大全| 天天干天天插天天透| 国产精品剧情在线视频| 精品成人一区二区三区四区影视| 在线观看视频一区二区精品| 日本亚洲综合伊人久久| 精品少妇人妻av免费麻豆| 成人污视频在线免费观看网址| 成人av泽村在线播放| 国产综合欧美日韩在线观看| 成人av泽村在线播放| 欧美一区二区三区视频在线观看| 日韩中文字幕一级乱码在线亚洲| 欧美成在线在线视频| 天天操天天舔天天操| 国产精品国产自产拍在线| 日日日日日日日夜夜夜夜夜| 好好的日com中文视频| 午夜美女操逼高潮免费视频| 日本jizzjizz少妇| 日本阿v片中文字幕在线| 在线国产小视频麻豆| 超碰av在线一区二区三区| 日韩妹子精品视频在线观看| 自拍偷拍 欧美亚洲| 亚洲综合一区二区在线视频| 欧美丝袜办公室在线91| 91精品丝袜久久久| 日韩一区=区三区四区| 人妻蜜臀久久久av免费| 国产不卡剧情在线观看| 国产91边对白在线播放| 天天玩天天摸天天舔| 国产午夜精品人妻中文字一幂| 日本亚洲美女视频一区| 国产美女视频网久久69| 久久热高清在线观看| 沈惊觉白小小免费看全集| 91人妻porny精品国产| 亚洲欧美专区一区二区三区| 午夜小视频 在线观看| 色综合天天综合网天天狠天| 青青色在线视频精品观看| 天天插天天舔天天日| aaa夜夜夜精品视频| 欧美日韩高清无毒不卡| 伊人激情综合视频网| 黄片一级黄片一级黄片| 手机看日韩av大片| 天堂免费av在线播放| 天天摸天天天天日少妇av| 日本少妇不卡狠狠狠| 日本激情内射一区二区三区| 亚洲综合一区二区在线视频| 九色91在线只有精品| 国产一级特黄aaa片做受小说| 手机视频免费在线观看| 日韩黄色a影视在线免费观看网站 日本久久久久久久久人妻视频 | 精品人妻人人做人碰人人爽| 久久久三级高清免费| 日本在线不卡视频播放| 91超碰在线播放视频| 韩国电影年轻的妈妈7| 91久久久久久久电影| 亚洲第一视频在线视频| 欧美一卡二卡3卡4卡无卡十| 亚洲情色在线视频播放| 清纯国模自拍视频在线观看| 国产免费公开视频在线播放| 亚洲欧美综合一区二区三区四区| 久久久精品国产综合| 激情91久久婷婷综合| 色综合天天综合高清网国产在线| 国产亚洲精品a77777| 欧美亚洲污视频网站| JK白丝喷白嫩嫩久久久| 中文在线播放一区二区三区| 无码丝袜人妻高跟鞋| 免费看黄片免费看视频| 在线观看免费的黄色片| 亚洲中文字幕综合av一区| 17夜人妻人人澡人妻| 精品suv一区二区33| 99精品久久久久久噜噜| 午夜福利伦理片在线观看| 欧美日韩性生活视频在线| 亚洲短视频自拍偷拍| 色 小说 激情 图片| 亚洲欧美三级在线观看视频| 日本激情床震无遮掩视频| 伊人婷婷视频在线观看| 久久精品日产第一区二区三区 | 国产主播av在线观看| 日韩夫妻性生活视频在线观看免费| 日本午夜色视频在线观看| 一区二区三区视频直播| 高潮少妇高潮久久精品99| 色www亚洲国产张柏芝| 国产美女在线极品美女网站| 五月激情网激情五月| av中文字幕 中文字幕第一页 | 精品中文字幕高清久久久久三级| 国产午夜精品一区二区不| 3p人妻一区二区三区| 国产在线观看XXXXX| 国产加勒比精品蜜臀在线观看| 男人把女人桶到爽午夜视频 | 漂亮人妻口爆深喉免费视频 | av男人天堂网在线观看| 精品国产伦理片1区2区| av在线播放网址大全| 五月开心六月伊人色婷婷| 国产精品福利视频资源| 九色91在线只有精品| 一区二区在线欧美日韩中文| 日韩美女av电影网| 91国语对白精彩在线视频| 日日夜夜草日日夜夜干| 成人av黄片免费在线观看专区| 69久久夜色精品国产69| 丝袜美腿av一区二区| 久久精品视频女人按摩| 国产精品久久久久久一级精品| 亚洲在线中文字幕av| 久久久com久久久com| 成年人午夜网站在线播放| 91精品国产人妻国产| 97精品视频久久久久| 在线免费观看亚洲v| 青青草手机免费在线视频 | 亚洲精品欧美日韩专区免费| 亲爱的请你原谅我 中文字幕| 欧洲码亚洲码一区二区三区四区| 国产精选黄片免费观看| 又大又黄又粗又爽少妇毛片| 91精选一区二区三区四区| 老外插美女在线视频| 色噜噜狠狠一区二区| 美女作污一区二区三区| 久久久精品国产亚洲av水| 制服乱伦强奸中文字幕| 97视频免费公开在线播放| 男女裸交无套啪啪激情高潮| 最新黄色天堂av在线资源| 久久热免费在线观看视频| 激情黄色激情综合久久| 国产55夜色66夜色男人的天堂| 偷拍亚洲图片欧美另类| 在线观看的a站视频| 国产一级久久久久高清版| 国产精品一国产精品免费| 亚洲视频资源在线播放| av蜜臀一区二区三区| 九色91在线只有精品| 最近中文字幕版2019日本| 50岁熟女乱综合一区二区| 美女精品一区二区三区| 168黄页网免费观看视频| 日韩av专场一区二区| 欧美专区在线观看视频| 免费在线观看成人激情视频| 日本欧美黄色网站免费| 国产成人自拍在线播放| 人妻天天爽夜夜爽2区蜜a∨| 欧美色高清vvvvvv| 少妇丰满一区一二区视频社区| 鲁死你资源站亚洲av一级aⅴ| 国产大全视频在线观看| 国产av剧情网址大全| 中文字幕=中文字幕| 免费在线观看不卡高清av| 爱毛片在线成人免费看| 白丝骚逼美女被操到逼水直流| 老窝鸭av一区二区三区| 亚洲综合熟女久久30p| 最近的中文字幕第二页| 日本女人牲交的视频| 中文字幕av影片免费在线观看 | 中文字幕日韩一二区| 亚洲国产长腿丝袜av天堂| 日本va欧美va国产综合va| 日本熟妇三十熟女精品区| 紫川动漫在线观看免费完整版| 97超碰在线资源总站 | 亚洲第一视频在线视频| 欧美黄色网黄色欧美网| 91久久久人妻精品一区二区| 日韩一级黄色片免费在线观看| 大香蕉手机免费在线| 天天日天天操天天干天天舔天天射| 一本v亚洲v天堂一区二区| 亚洲中文精品第一页| 东京一区二区三区av在线| 不戴胸罩的人妻电影| 五月天色婷婷亚洲欧美| 视频一区二区在线观看视频| 嗯嗯呐插进来嘛吸奶| 亚洲最大第八色在线视频 | 白丝骚逼美女被操到逼水直流| 2021国产麻豆剧传媒精品入口| 亚洲精品视频在线蜜桃| 亚洲最大第八色在线视频| 午夜动漫福利在线观看| 亚洲国产香蕉碰碰人人| 欧美日本一区二区三区在线观看| 国产在线观看XXXXX| 欧美码一二三区线观看| 在线观看国产区一区二| 亚洲高清码在线精品av| 久久热高清在线观看| 亚洲图片偷拍30pxxx| 夜夜色视频在线观看| 97se狠狠狠狠狼鲁亚洲综合色| 五月天色婷婷亚洲欧美| 男女啪啪自拍露脸视频| av自拍偷拍一区二区| 久久中文字幕永久第一页| 91国语对白精彩在线视频| 熟女视频一区二区在线观看| 青青草国产免费在线观看| 天天干天天日少妇网| 人妻在线一区二区三区| 国产婷婷色一区二区三区| 9l视频自拍九色9l视频不卡| 在线精品亚洲欧美日韩| 亚洲精品日韩中文久久91| 五月天久草亚洲香蕉| 亚洲综合精品天堂丁香芒果| 欧美码一二三区线观看| 人妻精品无码一区二区三区百花 | 中文字幕乱码精品一区二区三区 | 狂野欧美激情性xxxx| 天天操天天摸天天添| 国产又粗又猛又大爽又黄香借| 天天草天天日天天舔| 老司机带带我视频完整版| caopron在线成人免费| 青青青在线视频免费观看手机版| 最近的中文字幕第二页| 国产主播av在线观看| 天堂久久精品无码一区二区| 国产又长又粗又硬又爽免费视频| 91中文字幕yellow| 凹凸视频这里只有精品| 日产国产亚洲精品系列p| 鲁久久无码五月天有码| 推荐国产福利一区二区三区 | 亚洲午夜短视频在线| 无套内谢少妇一二三四| 亚洲国产综合精品中文字幕| av亚洲欧美一区二区| 又大又黄又粗又爽少妇毛片| 亚洲熟女乱色综合小说| 大胸美女黄网站色片大全亚洲| 最新国产剧情在线一区| 精华液一区二区区别| 小少妇久久久久久久| 秋霞午夜鲁丝片午夜精品久| 亚洲欧美激情人妻人妻综合| 日韩午夜福利三级经典| 特黄特黄的日韩爽大片| 免费在线观看不卡高清av| 中文字幕丰满人妻fsdss| 欧美日韩精品亚洲欧美| av蜜臀一区二区三区| 夜夜躁爽日日躁狠狠躁一区| 大香蕉手机免费在线| 欧美一卡二卡3卡4卡无卡十| 国产交换乱淫99视频| 亚洲一区二区蜜乳av| 青青青久免费在线视频| 91精品国产在热久久| 日本黄色录像第1部播放器播放| 漂亮人妻久久被公侵犯| 日产国产亚洲精品系列p| 亚洲精品视频在线99| 美女精品一区二区三区| 亚洲91精选一区二区在线| 欧美老熟妇乱子伦视频在线观看| 网友自拍+人妻丝袜+制服诱惑| 大香蕉av动作片在线观看| 精品少妇人妻大乳av| 99热在线这里只有精品| 7799精品视频免费观看| xxx一区二区三区在线观看| 欧美性感美女高潮视频 | av精品一区二区三区免费观看| 国产55夜色66夜色男人的天堂| 天天日天天干天天啪天天射| 亚洲天堂av成人在线观看| 懂色av蜜臀av绯色| 9999精品久久久久| 中文字幕 亚洲轻轻av| 久久久久免费特级黄片| 精品色欲久久久青青青人人爽| 国产天美传媒剧免费观看| 1234中文字幕内射在线| 看国产剧的免费软件| 漂亮人妻口爆深喉免费视频| 日本二区三区精品免费| 天天日,天天干,天天舔| 欧美老熟妇在线一区二区三区| 深夜福利成人在线观看| 亚洲av日韩av在线综合av| 蜜桃精品www视频在线观看| 久久热免费在线观看视频| 亚洲最新欧美偷拍视频| 国产97在线观看视频| 黄免费在线观看视频| 91精品一区二区三区蜜桃| 免费在线一区二区视频| 91麻豆精品国产综合久久久主演| 真人一级一97片成人片| 亚洲国产成人爱av网站| 91免费免费观看在线| 日本国产福利视频在线观看| 黄色片网站国产精品| 黄片一级黄片一级黄片| 国产免费av天堂蘑菇视频| 麻豆精品传媒在线播放| 日韩欧美激情啪啪啪| 超碰97在线观看免费| 欧美三级不卡不毒视频| 97超碰在线中文字幕精品| 男人日女人鸡鸡天天视频官方| 欧美在线中文字幕第一页| 精品suv一区二区33| 色综合天天综合网天天狠天| 亚洲中字幕日产AV片在线| 日韩中文av在线观看| 亚洲av日韩av在线综合av| 视频一区二区亚洲欧美| 极品美女少妇高潮喷水| 色姑娘天天干天天操| 精品人妻熟女a62v久久| 91麻豆精品国产综合久久久主演| 中文乱码字幕人妻精品| 亚洲另类视频图片小说| 亚洲综合熟女久久30p| 欧美成人中文字幕在线视频| 熟女视频一区二区在线观看| 国产加勒比精品蜜臀在线观看| 一级黄色片特级黄色片| 成人av影视一区二区三区| 日本一卡不带卡的视频| 爱毛片在线成人免费看| 精华液一区二区区别| 久久中文字幕永久第一页| 亚洲欧美激情人妻人妻综合| 亚洲AV永久青草无码士清品| 极品美女少妇高潮喷水| 中文字幕久久五月天| 丰满老熟女av在线| 欧洲码亚洲码一区二区三区四区| 大香蕉av电影在线| 69视频永久免费观看| 欧洲av网址在线观看| 亚洲精品中文字幕原千岁| 密乳一区二区三区国产亚洲av| 国产大屁股影音在线播放| 精品国产一区二区三区欧美精品| 在线免费观看精品一区| 亚洲va欧美va国产综合久久| 免费在线一区二区视频| 玩弄放荡人妻少妇免费视频| 蜜臀国产精品久久久久久 | 天天操日日干夜夜操| 国产精品剧情在线视频| 亚洲av丝袜诱惑在线| 中文字幕一区二区三区四区五区人| 亚洲女人毛毛多毛耸耸| 欧美另类视频第二页| av看片资源网手机版在线播放| 亚洲国产成人精品久久久久久久久| 中文字幕久久久aⅴ大片| 黄片激情视频国产免费| 中文字幕一区二区720p| 538精品视频国产| 日韩欧美激情啪啪啪| 少妇人妻系列500视频| av色综合久久天堂av…| 天天干天天干天天操天天日 | 日韩在线视频观看你懂的| 无码伊人久久大杳蕉中文无码| 欧美视频免费在线看| 国产视频污污污在线观看| 国内亚洲一区二区视频| 精品国产一区二区三区欧美精品| 国产精品永久免费在线网站观看| 97超碰人人澡香蕉| 无套内谢少妇一二三四| 大屁股熟女少妇一区二区| 天天日天天干天天啪天天射| av亚洲欧美一区二区| 加勒比日本一区二区三区| 在线观看国产剧情av| 五月婷婷六月久久久| 91久久久久精品一区二区三区| 免费一级特黄特色黄录像| 欧美美女色视频免费看| 狠狠添狠狠添狠狠添免费出高潮水 | 免费观看亚洲欧洲在线视频 | 77777色婷婷av一区二区三| 自拍偷拍亚洲色图经典三级| 看全黄大黄大色大片美女| 一区二区三区免费精品| 日本xxxxx久久| 亚洲地址一区二区三区四区| 中文字幕_第1页_绿茶av| 欧洲亚洲国产永久精品| 最新97在线视频资源| 插美女阴道流水视频| 成人欧美网站免费直接看| 9l视频自拍蝌蚪9l成人熟妇| 成年大片免费视频播放二级| 国产亚洲精品视频久久久| 强d乱码中文字幕熟女导航| 在线精品亚洲欧美日韩| 国产日韩欧美高清无网码| 亚洲AV无码成人精品国产一区| 宝贝腿开大点我添添公漫画| 床戏高潮呻吟声片段大全| 色视频网在线视频观看| 亚洲欧洲久久av日日更新| 九一欧洲国产无码在线| 老头插进去好多水'视频| 老熟妇乱一区二区三区| 亚洲国产综合精品中文字幕| 深夜福利成人在线观看| 视频一区 欧美情色| 91麻豆精品国产综合久久久主演| 日日躁夜夜躁狠狠躁av蜜臀| 中文字幕亚洲专区婷婷| 99久久国产亚洲精品| 深夜黄色福利网站在线观看| 日韩欧美亚洲第五页| 99精品一区在线观看| 3p人妻一区二区三区| 日韩精品性色一区二区在线观看| 巨大屁股女教师极品白嫩少妇| 大香蕉在线欧美观看| 亚洲另类校园春色小说| 大香蕉久久久久久久久| 69视频永久免费观看| 亚洲一区二区三区视频免费观看| 亚洲国产精品久久久久秋霞1| 午夜一分钟视频免费在线观看 | 日韩少妇中文字幕一区| 日本国产福利视频在线观看| 亚洲人成在线1国产盗拍| 成人av泽村在线播放| 亚洲一二三区免费视频| 99999精品视频在线观看| 黑人玩弄,人妻,一区二区三区| 亚洲欧洲久久av日日更新| 国产小视频在线播放| 91手机免费在线视频| 娇小型av优女大全| 国产精品大片在线观看网站资源| 美女很黄很色国产av| 精品中文字幕高清久久久久三级| 天堂av在线男女av| av在线播放网址大全| 91超碰在线免费播放| 男女视频一区在线观看| 天天干天天操天天射天天日|