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 777爽死你无码免费看一二区| 91精选一区二区三区四区| 亚洲黄色小视频网址| 在线国产小视频麻豆| 在线观看一区二精品视频| 人妻熟女中文字幕电影| 日本黄站一区二区在线观看| 欧美黄色网黄色欧美网| 蜜臀国产精品久久久久久| 福利视频一二三在线视频免费观看| 北岛玲精品一区二区三| 丝袜美腿一区二区三区jk| 天堂av在线一区少妇| 日韩黄色a影视在线免费观看网站 日本久久久久久久久人妻视频 | 亚洲码和欧洲码的尺码| 国产一级久久久久高清版| 国产 欧美 五月 激情| 天天操天天舔天天操| 777爽死你无码免费看一二区| 国内在线精品视频在线观看| 中文字幕一区二区720p| 中文字幕日韩一二区| 五十二老熟女高潮嗷嗷叫| 国产婷婷色一区二区三区| 婷婷热re99久久精品国产| 9色porny人妻| 在线观看免费a级电影| 各种玩小处雌女视频| 蜜桃系列一区二区观看| aaa夜夜夜精品视频| 亚洲综合精品天堂丁香芒果| 99国产精品视频播放| 国产精品久久性欧美| 欧美大香蕉一区二区三区| 国产精品蜜臀在线观看| av自拍偷拍一区二区| dorcelclub欧美成人| 亚洲精品在线免费观看视频| 漂亮人妻口爆深喉免费视频| 91极品尤物国产在线播放| 国产在线精品免费视频| 亚洲一区二区日韩欧美久久 | 97超碰资源总站在线观看| 超碰人人综合网97| 台湾性dvd性色av| 国产精品久久久久久一级精品 | 蜜桃精品www视频在线观看| 在线观看欧美日一区二区 | av一区二区在线播放色婷婷精品| 男人天堂2017在线| 六十六节医疗保健操全套| 久久精品国产亚洲av四区| 欧美日韩国产免费福利| 69久久夜色精品国产69| 制服中文丝袜国产日韩另类| 国产午夜精华视频在线| 538精品新视频在线观看| 97久久超碰成人精品网页91| gogo大尺度二区三区| 久久综合精品五月天| 欧美日韩精品亚洲欧美| 国产精品久久久久久久综合av| ww久久久久国产喷水18禁| 亚洲欧美激情人妻人妻综合| 91精品国产在热久久| 欧美大香蕉一区二区三区| 中文字幕亚洲亚洲激情| 99精品国产九九国产精品| 亚洲国产香蕉碰碰人人| 邪恶老湿精品一区二区| 精品人妻一二三区更新| 人妻出轨av中文字幕| 男人的天堂av成人网| av在线免费观看一区| 91中文字幕yellow| 国产免费午夜精品视频| 天堂av2025一区| 丰满老熟女av在线| 日本欧美在线免费观看视频| 弄爽新婚人妻第五部美妙人妻| 亚洲AV永久青草无码士清品| 亚洲制服丝袜日韩欧美制服| 又大又黄又粗又爽少妇毛片| 特黄把女人弄爽又大又粗| 欧美vide0sde极品另类| 亚洲人成在线1国产盗拍| 欧美日本一区二区三区在线观看| 免费观看在线黄色大片| 中文字幕一区二区三区四区五区人| 日本不卡网在线观看视频| 揉老熟女老熟妇aaa| 女友97年白嫩漂亮在线看| 大香蕉在线福利导航| 国产手机av免费在线看片不卡| 欧美口爆吞精一区二区三区| 丰满老熟女av在线| 天天操日日干夜夜射| 国产午夜精品在线播放| 99热在线都是精品免费| 一区二区在线欧美日韩中文| 亚洲最新欧美偷拍视频| 欧美一卡二卡3卡4卡无卡十| 成人av黄片免费在线观看专区 | 91九色popny人妻| 91在线观看青青超碰| av色综合久久天堂av…| 在线观看免费的黄色片| 欧美大香蕉一区二区三区| 免费观看亚洲欧洲在线视频| 成人专区禁18处网站| 亚洲一二三区免费视频| 亚洲在线视频一区二区| 少妇性感美女一区二区三区四区| 国产女主播av在线播放观看| 啊啊啊啊在线视频观看| 人妻 日韩 欧美 综合 制服| 天天透天天插天天日| 国产精品v欧美精品v亚洲精品| 伊人国产精品成人在线| 美女爽爽午夜作爱视频1314| 丰满老熟女av在线| 青青色国产在线视频网站| 亚洲免费不卡一区二区三区| jizz成人在线视频| 蜜臀久久99精品久久久久久久久| 中文字幕人妻二区三区免费视频| 9i精品福利一区二区三区蜜桃| 天堂av在线一区少妇| 粗大挺进朋友人妻身体里国产 | 91精选一区二区三区四区| 久久久久久久久久99蜜桃| 91九色黑丝长腿美女| 熟女老骚91porn九色| 免费精品国产人妻国语| 伊人婷婷视频在线观看| 最新欧美一级特黄大片| 77字幕网77中文字幕| 北岛玲精品一区二区三| 几把操女的逼喷水视频| 欧美国产亚洲自拍偷拍| 91麻豆精品国产综合久久久主演| 中文字幕乱码熟女人妻水蜜桃| 狠狠干在线视频观看| 日本精品一区二区三区四区| 蜜臀国产精品久久久久久| beeg欧美丰满人妻| 一区二区三区水蜜桃视频| 中文字幕亚洲天堂av在线| 欧美亚洲自拍偷拍xxx| 中文字幕亚洲亚洲激情| 国产精选黄片免费观看| 国产av国片精品jk制服| 日本国产精品第一页久久| 狂野欧美激情性xxxx| 美女厕所撒尿偷拍视频| 最近中文字幕版2019日本| 色偷偷欧美男人的天堂| 亚洲综合精品天堂丁香芒果| 亚洲最快不卡av综合| 富婆按摩高潮一区二区三区91| 国产精品自产拍在线观| 蜜桃视频app网站入口| 亚洲情色成人精品视频| 日本 高清 中文字幕| 黄片一级黄片一级黄片| 天天插天天舔天天日| 人妻熟女中文字幕电影| 四十路の五十路熟女网址| 97se狠狠狠狠狼鲁亚洲综合色| 网友自拍+人妻丝袜+制服诱惑| 少妇厨房激情做爰欧美| 97人妻少妇熟女av| 大香蕉av电影在线| 50岁熟女乱综合一区二区| 亚洲伊人第一综合网| 色婷婷综合久久久久中文一区二区 | 欧美丝袜办公室在线91| 午夜福利伦理片在线观看| 女同性ⅹxx女同hd偷拍| 日韩欧美亚洲精品高清国产| 在线播放__91色| 午夜高清在线观看免费| 午夜久久在线观看视频| 日韩激情又爽aaaaa级| 国产在线观看av专区| 天堂av中文官网在线| 91综合久久久久久久久久久| 天天日天天爱天天玩| 极品美女少妇高潮喷水| 亚洲欧美码免费观看视频| 2022国产情侣在线视频播放| 视频二区视频四区中文| 亚洲91色精品一区二区| 淫色网亚洲av日韩av| 激情91久久婷婷综合| 97视频免费观看一区| 一区二区三区免费精品| JK白丝喷白嫩嫩久久久| 漂亮人妻口爆深喉免费视频| 真人一级一97片成人片| 国产九色视频在线观看| 不戴胸罩的人妻电影| 亚洲在线中文字幕av| 91九色popny人妻| 啪啪啪啪一区二区三区四区三级片| 吃大咪咪操骚逼高清视频| 欧美黑人一级性视频| 亚洲欧美久久精品免费| 天天爱天天做天天舔| 午夜狠狠干在线视频| 久产久91精国九品打| 黄色av观看一区二区三区| 91精品视频在线观看999| 精品人妻人人做人碰人人爽| 国产精品视频自拍一区| 亚洲精品乱码久久久久99| 又粗又硬又黄又色的| 成人av黄片免费在线观看专区 | 一区二区三区高清在线| 天堂免费av在线播放| 国产在线免费av观看| 亚洲国产欧美日韩综合| 中文字幕丰满人妻fsdss| 中文字幕在线观看一二三四| www国产精品人妻| 日本久久久久久久久人妻视频| 中文字幕中文字幕在线一区| 日韩九色pron国产日韩| 少妇高潮一区二区三区在线| 精品一区二区三区视频观看| 沈惊觉白小小免费看全集| 国产91手机精品在线播放| 国产精品大片在线观看网站资源| 日本国产精品第一页久久| 国产精品8888在线观看| 手机在线看日韩av资源| 欧美vide0sde极品另类| 91九色在线视频入口| 超碰青青草原免费在线观看97 | 最近2019日本中文字幕| 精品一区二区三区别视频| 激情视频国产在线观看| 50岁老熟女高潮喷水了| 99久久久久久久久96久久| 这里只有精品99视频| 99在线只有精品视频| 免费观看亚洲女同性恋一区二区| 91av在线网址观看| 丰满老熟女av在线| 邪恶老湿精品一区二区| 欧美亚洲另类综合网| 97精产国品一二三产区区| 又粗又硬又黄又色的| 91综合久久久久久久久久久| 蜜桃精品www视频在线观看| 国产av一区二区最新精品| 亚洲精品午夜福利久久| 欧美18vide0sex性极品| 天天插天天干天天爽| v888av精品少妇| 精品国产精品国产免费| 亚洲午夜激情视频在线播放| 51成人看片免费软件| 一区二区三区免费精品| 男人的天堂av成人网| 99久久无色码中文字幕免费| 青娱乐休闲在线观看视频| 免费高清视频亚洲熟女| 国产大女露脸自拍大叫| 国产精品自拍视频网站| 最新中文字幕不卡av| av在线免费观看一区| 最近最新高清欧美日韩中文字幕| 精品国精品国自产在产国产| 91精品青草福利久久午夜| 九九热线这里只有精品| 日本欧美视频免费观看| 日韩少妇中文字幕一区| 男女啪啪自拍露脸视频| 日韩精品视频网站免费观看| 中文字幕欧美人妻精品精品| 日韩高清亚洲精品国产欧美| xxx一区二区三区在线观看| 美女啪啪啪免费网站视频| 少妇花园流浆嗯嗯张开视频| 久久精品aⅴ无码中文字字幕蜜桃| 色婷婷综合欧美日韩亚洲| 欧美午夜免费福利视频| 护士色视频亚洲婷婷| 久久久久久久毛片5| 无码伊人久久大杳蕉中文无码| 人人妻人人澡人人爽dv| 色yeye香蕉人妻凹凸一区二区| 亚洲在线中文字幕av| 久久与久久最新视频| 在线免费观看亚洲v| 国产91福利在线导航| 日韩一级片黄色av| 午夜福利伦理片在线观看| 全国av一卡二卡三卡免费| 成人中文字幕在线高清 | 国产视频污污污在线观看| 久久精品亚洲一区二区三| 天天干天天干天天操天天日| 成人涩涩小片视频日本| 男插女下面真人视频| 人妻斩43r熟女人妻| 9999国产精品免费| 日日夜夜精品视频观看| 鲁死你资源站亚洲av一级aⅴ| 男人插女人逼视频播放| 福利视频一二三在线视频免费观看| 毛片中文aaa五月天| 亚洲最大av无码国产网址| 亚洲熟妇色xxxxx妇色| av中文字幕 中文字幕第一页 | 日本黄色an久久一区| 91精选一区二区三区四区| 色老汉av一区二区三区| 久久人人妻人人做人人爽涩爱| 水蜜桃在线视频一区二区三区 | 国产精品自拍视频网站| 欧美三级不卡在线播放 | 亚洲国产成人爱av网站| 成人在线中文字幕日韩| 日本一区二区伦理在线观看| 男人插女人阴穴的视频| 91精品人妻丰满熟妇| 亚洲国产成人爱av网站| 女同性ⅹxx女同hd偷拍| 中文字幕亚洲天堂av在线| 青青青在线视频免费观看手机版| 欧美亚洲国产激情在线| 91精品丝袜久久久| 精品国产污网址在线观看| 在线视频在线观看你懂的| 亚洲 欧美 日韩 另类在线| 男人的天堂av成人网| 亚洲91色精品一区二区| 亚洲成电影在线观看青青| 亚洲区欧美区自拍偷拍区| 午夜小视频免费在线| 少妇性感美女一区二区三区四区| 精品麻豆国产综合在线9| 国产女主播av在线播放观看| 中文字幕 亚洲轻轻av| 秋霞午夜鲁丝片午夜精品久| 熟女人妻五十路x50| 欧美口爆吞精一区二区三区| 啪啪啪1000国产精品| 午夜无码精品一区二区三区| 国产又黄又高潮又a的视频| 国产婷婷色三区二区一区| 亚洲中文字幕综合av一区| 午夜伦理在线在线观看视频| 欧美在线一区二区三区| 最新久久久久久久久久久| 日本va欧美va国产综合va| 亚洲精品欧美日韩专区免费| 午夜dj在线观看完整版| 中文字幕乱码熟女人妻水蜜桃| 国产一级免费观看av网站| 被大鸡吧操骚B真爽视频| 蜜桃精品www视频在线观看| 亚洲中字幕日产AV片在线| 97 在线观看视频网站| 五月天久草亚洲香蕉| 国产精品剧情在线视频| 青青色在线视频精品观看| 天天插天天射天天日天天干| 久久久久久久久久二区| 国产综合无码视频呢在线| 999久久久91一区二区| 91精品国产人妻国产| 可以免费看黄色的网址| JK白丝喷白嫩嫩久久久| 黑人中出日本人妻系列| 国产老头视频在线观看| 在线看不卡日本av| 成人网视频欧美在线观看| 国产真人做爰免费观看| 国产又粗又猛又大爽又黄香借| 黄色古装操逼小视频| 中国精品视频在线观看一区二区| 51成人看片免费软件| 亚洲女人毛毛多毛耸耸| 白丝骚逼美女被操到逼水直流| 日韩一级黄色片免费在线观看| 午夜动漫福利在线观看| 弄爽新婚人妻第五部美妙人妻| 日本国产精品第一页久久| 久久久久久久国产黄色片| 好紧好湿好爽好大A视频| 在线成人中文字幕网站| 亚洲AV无码成人精品国产一区| 成年免费毛片视频不卡| 日本少妇一二三视频| 亚洲欧美久久精品免费| 日本国产精品第一页久久| 男女裸交无套啪啪激情高潮| 17c久久精品国产亚洲av蜜柚| 亚洲高清码在线精品av| 香蕉视频免费看国产精品| 男人插女人阴穴的视频| 一色桃子av人妻熟女完整版| 男女视频一区在线观看| 日韩级视频在线播放| 天天射天天舔天天看| 美女福利在线免费观看| 国产人妖综合在线视频| 日韩精品在线观看直播| 亲爱的请你原谅我 中文字幕| 人妻熟女中文字幕电影| 小岳母在线观看完整版| 日韩中文字幕一级乱码在线亚洲| 制服乱伦强奸中文字幕| 91免费福利视频专区| 中文字幕在线观看观看av?| 亚洲精品中文字幕原千岁| 亲爱的请你原谅我 中文字幕| 日本一区二区亚洲综合| 男人的j插进女人的逼| 人妻斩43r熟女人妻| 五月开心六月伊人色婷婷| 亚洲最快不卡av综合| 91国语对白精彩在线视频| 欧美日韩激情图片视频另类| 日本熟妇三十熟女精品区| 91精品青草福利久久午夜| 日本欧美黄色网站免费| 男生捅女生逼的免费视频软件 | 亚洲精品久久中文字幕| 宾馆偷拍一区二区三区| 91九色在线视频入口| 粉嫩玉足夹茎视频在线看| 在线精品视频这里只有精品| 放荡的丝袜美腿护士老师| 69视频永久免费观看| 人人妻人人澡人人爽dv| 久久精品aⅴ无码中文字字幕蜜桃 中文字幕丝袜人妻乱一区三区 | 操女人逼逼好爽啊操| 国产成人自拍在线播放| 中文字幕少妇av一区二区三区| 手机在线看日韩av资源| 91人妻porny精品国产| 精品少妇人妻av免费麻豆| 一级视频在线观看高清国产免费| 人妻熟女中文字幕电影| 极品美女少妇高潮喷水| 国产高清欧美日韩精品| 999精品欧美一区二区三区黑人| 自拍偷拍国产欧美精品| 国产亚洲av网址大全| 最新国产剧情在线一区| 天天爱天天插天天射| 亚洲男人平均性生活时间| 国产91边对白在线播放| 中年美熟妇与少年的激情| 中文字幕在线精品的视频| 中文字幕av影片免费在线观看| 日本特黄免费一级大片| 最新日韩成人av电影| 综合日韩人妻一区二区三区| 人妻ol未亡人中文字幕| 成人在线视频日韩国产| 麻豆精品传媒在线播放| 51国精产品一区二区三| 2021久久国自产拍精品 | 日韩欧美精品熟妇视频播放| 一区二区三区精品久久人妻| 国产 精品 日韩 人妻| 色屁屁一区二区三区视频国产| 无套内射黑丝美女91| 91久久精品视频地址| 少妇人妻系列500视频| 露臀裙后入在线视频| 小少妇久久久久久久| 狠狠操视频在线免费观看| 久久精品亚洲一区二区三 | 在线亚洲视频免费看| 欧美日韩高清无毒不卡| 国产精品久久久久久电 | 欧美日韩黄色aaa| 亚洲黄片在线免费播放| 亚洲天堂av成人在线观看| 国产一级特黄aaa片做受小说| 97超碰人人澡香蕉| 亚洲欧美熟妇另类久久久久久| 人妻熟妇久久久久久xxx| 少妇丰满一区一二区视频社区| 激情视频国产在线观看| 一级av中文字幕在线观看| 人妻少妇资源网av| 中文字幕超碰18区| 97超碰资源在线播放| 中文字幕av一区二区三区不卡| 国产一级免费观看av网站| 久久精品亚洲一区二区三| 黑人中出日本人妻系列| 亚洲欧美另类离制服丝袜| 亚洲情色成人精品视频| 麻豆免费成人小视频| 欧美色视频日本片免费看| 桃子av在线免费观看| 强伦轩人妻一区二区三| 日本一区二区三区高清在线| 无套内谢少妇一二三四| 天天操日日干夜夜操| 成年大片免费视频播放二级| 日本熟艳妇A站黄色视频| 中文字幕人妻不卡久久| 97人妻少妇熟女av| 九色视频在线观看网址| 77777色婷婷av一区二区三| 午夜动漫福利在线观看| 久久精品视频2015| 人人爽人人爽人人妻| 人人爱精品人人艹人人干| 富婆按摩高潮一区二区三区91| 国产高清激情在线视频| 77字幕网77中文字幕| 亚洲中文字幕综合av一区| 国产av剧情网址大全| 男女视频一区在线观看| 亚洲 自拍 色综合图区av网站| 日韩一级黄色片免费在线观看| 亚洲天堂av影视在线| 91瑟瑟视频在线观看| 可以在线观看的视频你懂的| 97超碰在线中文字幕精品| 国产精品剧情在线视频| 好紧好湿好爽好大A视频| 亚洲情色成人精品视频| 精品一区二区三区别视频| 在线观看国产区一区二| 999人妻精品中出| 日韩中文av在线观看| 亚洲熟女少妇 精品| 被大鸡吧操骚B真爽视频| 免费在线视频 中文字幕| 成人av毛片免费观看| 欧美国产一级在线免费观看| 久久日99久久里面有精品| 欧美三级不卡在线播放 | 久久综合精品五月天| 男生捅女生逼的免费视频软件 | 午夜久久在线观看视频| 夜夜色视频在线观看| 日韩免费一卡二卡三卡四卡五卡| 成人国产av精品麻豆入口| 日韩一级片黄色av| 放荡的丝袜美腿护士老师| 亚洲中文精品第一页| 超碰在线97观看国产| 九色91蝌蚪porn| 夜夜躁爽日日躁狠狠躁一区 | 桃子av在线免费观看| 国产青青自拍视频在线观看看| 宾馆偷拍一区二区三区| 蜜桃黄视频在线观看| 777爽死你无码免费看一二区| 伊人激情综合视频网| 五十二老熟女高潮嗷嗷叫| 成人免费xxxx在线| 男男小视频在线观看| 搞黄色的网站在线观看| 亚洲国产欧美日韩综合| 白丝高中生被靠操在观看| 自拍偷拍av一区二区三区| 人妻ol未亡人中文字幕| 9色porny人妻| 国产精品国三级国产av无密码| 91在线精品一区二区毛片| 国产在线av免费观看| 午夜激情片免费在线观看| 好紧好湿好爽好大A视频| 91青青青青艹视频在线观看 | 日韩av专场一区二区| 午夜福利无码一区二区三区| 91大神长腿美女视频在线观看| 欧洲老妇人一区二区三区| 丰满熟妇xxxx性久久久| 黑人中出日本人妻系列| 亚洲情色成人精品视频| 午夜两性操一操在线观看嗯嗯啊| 大香蕉伊人久久在线观看| 在线观看的a站视频| 天天日天天爱天天玩| 放荡的丝袜美腿护士老师| 日本乱理三级在线观影视频| 中文字幕熟女人妻丝袜电影| 97视频免费观看一区| 护士色视频亚洲婷婷| 日本mm一区二区三区高清| 天天摸天天舔天天透| 国产加勒比精品蜜臀在线观看| 好好的日com中文视频| 韩国美女主播福利在线| 激情91久久婷婷综合| 五月天色婷婷亚洲欧美| 北条麻妃超碰av在线播放| 人妻熟妇久久久久久xxx| 国产成人自拍在线播放| caoporm超碰97| 人人妻人人澡人人爽dv| 9i精品福利一区二区三区蜜桃| 深夜释放成人污污污| 爱妃视频av一区二区| 精品人妻熟女a62v久久| 中文字幕激情亚洲精品| 人妻斩43r熟女人妻| 国产成年人性生活视频| 激情91久久婷婷综合| 91在线精品一区二区毛片| 中文乱码在线观看一区| 邪恶老湿精品一区二区| 精品熟妇丰满人妻视频| 国产免费公开视频在线播放| 国产精品永久免费在线网站观看| 中文字幕中文字幕在线一区| 黄片一级黄片一级黄片| 天天插天天射天天日天天干| 中文字幕在线观看观看av?| 熟妇av一区二区三区| 亚洲一区二区三区在线直播| 午夜无码精品一区二区三区| 少妇被无套内谢免费观看| 精品在线观看一区二区视频| 欧美在线一区二区三区| 国产精品亚洲精品久| 91久久久久精品一区二区三区| AV成人国产免费久久精品| 日韩黄色a影视在线免费观看网站| 99精品国产九九国产精品| 欧美亚洲日产国产综合| 男人插女人阴穴的视频| 日韩精品视频网站免费观看| 亚国产亚洲亚洲精品视频| 欧洲老妇人一区二区三区| 精品亚洲永久免费精品网站| av蜜臀免费在线观看| 精品黄色一级久久久久久久久| 黄片一级黄片一级黄片| 亚洲一级精品久久久蜜桃| 中文字幕熟女人妻丝袜电影| 91popny熟女九色| 黄色片网站国产精品| 亚洲 自拍 色综合图区av| 玩儿女人操逼大片儿| 日韩在线视频观看你懂的| 中文字幕乱码视频日本一区二区| 日韩欧美在线综合网高清| 自拍偷拍在线福利视频| 男生殖器插女生殖器视频欧美| 伊人激情综合视频网| 视频免费在线观看网| 把鸡鸡伸进去的视频| 大逼小逼操大屌视频| 亚洲人妻一区二区三区久久精品 | 日本特黄免费一级大片| 亚洲综合在线蜜臀av| 精品久久久久久无码中文野结衣| 成人涩涩小片视频日本| 日本丰满人妻免费电影| 两人在沙发激情的视频| 污污污的视频免费在线观看| 男女啪啪视频免费国产| 日本成人av在线免费看| 欧美裸体xxxxx极品少妇| 啊啊啊啊啊鸡巴进小穴了视频| 免费一区二区三区香蕉| 国产精品v欧美精品v亚洲精品| 狠狠干在线视频观看| 亚洲影视精品一区二区| 亚洲女子4x100米接力决赛| 亚洲国产成人久久无码| 成人午夜福利视频镇东影视| 国产加勒比高清无码在线视频 | 激情黄色激情综合久久| 91精品国产人妻国产| 亚洲女人毛毛多毛耸耸| 91超碰在线免费播放| 污视频免费网站观看| 日本少妇一二三视频| 天天摸天天天天日少妇av| 美女被鸡操黄片入口| 东京热tokyo黑人系列| 国产一区二区三区黄片欧美| 玩弄放荡人妻少妇免费视频| 成年大片免费视频播放二级| 亚洲 自拍 色综合图区av| 99精品国产中文字幕| 白丝高中生被靠操在观看| 亚洲va欧美va人人爽2| 国产女人AAA级久久久级| 中文字幕在线aⅴ免费观看| 午夜无码精品一区二区三区| 日日夜夜精品视频观看| 久久久国产亚洲精品黑人| 日本不卡网在线观看视频| 91九色p精品久久久| 国产又粗又猛又大爽又黄香借| 国产婷婷综合丁香亚洲欧洲| 91日本av在线观看| 91av在线网址观看| 国产97日韩在线观看| 国产男女激情视频一区| 成人av毛片免费观看| 亚洲AV永久青草无码士清品| 免费一级特黄特色黄录像| 精品亚洲国产亚洲国产| 色情按摩XXXXXX视频| 国产精品视频中文无码| 在线精品视频这里只有精品| 日本伦精品一区二区三区免费 | 中文热免费在线视频| 久久久久久久国产黄色片| 日本黄站一区二区在线观看| 超级碰免费人妻97| 中文在线播放一区二区三区| 9999国产精品免费| 国产婷婷色一区二区三区| 人妻ol未亡人中文字幕| 视频一区二区亚洲欧美| 少妇视频播放在线播放免费观看| 男人的天堂在线免费av| 亚洲国产精品午夜福利久久| 国产高清欧美日韩精品| av在线视频观看免费| 免费网站黄色在线观看不卡| huangse网站免费观看| 国产精品视频中文无码| 亚洲另类校园春色小说| 中文字幕中文有码在线精品| 涩爱av一区二区在线播放视频| 免费一级特黄特色黄录像| 手机视频免费在线观看| 中文乱码在线观看一区| 91中文日韩免费精品| 97久久超碰成人精品网页91| 男人午夜视频在线观看| 亚洲av丝袜诱惑在线| 婷婷色在线免费视频| 9999国产精品免费| 中文在线播放一区二区三区| 狠狠添狠狠添狠狠添免费出高潮水| 欧美18vide0sex性极品| 97人妻少妇熟女av| 深夜福利成人在线观看| 久久久com久久久com| 偷怕自拍在线免费观看| 三级黄色在线播放网站| 日本一卡不带卡的视频| 94老司机福利社精品视频| 中文视频久久在线观看| 成人区人妻精品一区二区不卡蜜臀 | 中文字幕亚洲情色在线观看| 97超碰资源总站在线观看| 日韩一级片黄色av| 2020最新中文字幕在线| 一区二区啪视频在线观看| 亚洲国产丰满熟女一区二区三区| 丰满人妻一区二区三区免费视频棣| 国产精品视频成人在线观看| 91免费免费观看在线| 蜜臀av在线观看一区| 亚洲午夜激情视频在线播放| 在线免费观看精品一区| 50岁熟女乱综合一区二区| 久久久精品国产综合| beeg欧美丰满人妻| 91高清免费在线播放| 日韩不卡免费一区二区三区视频| 2021国产麻豆剧传媒精品入口| 成人欧美久久久久美婷婷| 亚洲中文有码字幕青青| 人妻熟女–第2页–无名网| 国产在线观看XXXXX| 日本欧美黄色网站免费| 91:久久久久久久久久| 动漫黄网站在线观看| 国语自产免费精品视频一区二区 | 成人涩涩小片视频日本| 国产精品一国产精品免费| 精品suv一区二区33| 日韩中文av在线观看| 亚洲人妻无吗中文字幕| 人视频一区二区三区| 好大好粗好爽好黄c黄片| 极品美女少妇高潮喷水| 天堂久久精品无码一区二区| 日本成年人大片免费观看| 日日夜夜精品视频观看| 紫川动漫在线观看免费完整版| 青草神马视频在线网址| 日韩一二三在线视频播放| 中国精品视频在线观看一区二区| 色视频免费在线观看高清| 成人区人妻精品一区二区不卡蜜臀| 精品麻豆国产综合在线9| av自拍偷拍一区二区| 玩儿女人操逼大片儿| 露臀裙后入在线视频| 网友自拍+人妻丝袜+制服诱惑| 男人操女人逼视频免费| 日本伦精品一区二区三区免费| 国产高清欧美日韩精品| 熟女国产一区二区三区| 天天干天天操天天射天天日| 又粗又硬又黄又色的| 91九色免费在线观看| av大片免费观看网站| 超碰97人妻中文字幕| 欧美成人性生活一级片| 日韩一区=区三区四区| av自拍偷拍一区二区| 男女上下差差发哈插插插| 日本a v中文字幕网| 精品国产精品国产免费| 日本一区二区亚洲综合| 欧美老熟妇乱子伦视频在线观看 | 亚洲图片 欧美专区 自拍| 国产av电影网站一区| 天天干天天干天天操天天日| 亚洲欧美熟妇另类久久久久久| 1234中文字幕内射在线| 亚洲熟妇少妇一区二区| 国产美女精品久久久有奶水| 美女很黄很色国产av| 久久亚洲av午夜福利精品一区| 天天操日日干夜夜操| 50岁熟女乱综合一区二区 | 麻豆电影国产一区在线观看| 天天干天天插天天透| 朴妮唛无删减福利在线观看| 密乳一区二区三区国产亚洲av| 宾馆偷拍一区二区三区| 无码伊人久久大杳蕉中文无码| 中文字幕在线观看操穴视频| 亚洲美女啪啪邪恶视频| 美日韩黄色一级视频| 玩弄放荡人妻少妇免费视频| 嫩草伊人久久精品少妇av网站| 天堂久久精品无码一区二区| 国产呻吟揉丰满一区三六区| 亚洲熟女资源一区二区| 欧美国产一级在线免费观看| 亚洲综合在线一区二区三区四区| 天天干天天插天天透| 国产伦精品一区二区三区妓国产| 人妻天天爽夜夜爽2区蜜a∨| 亚洲AV无码成人精品国产一区| 大鸡吧淫水四射视频| 欧美乱码卡1卡二卡3卡4| 成年女女子免费视频播放| 亚洲男人平均性生活时间| 欧美日韩精品免费看| 天天日天天草天天插| 91超碰在线免费播放| 日本国产精品第一页久久| 亚洲精品视频在线蜜桃| 9l视频自拍蝌蚪9l成人熟妇| 男人操女人逼视频免费| 嗯嗯呐插进来嘛吸奶| 国产三级中文字幕av| 男人把女人桶到爽午夜视频| 成年大片免费视频播放二级| 成人av在线国产精品| 欧美激情免费观看一区二区| 日本熟艳妇A站黄色视频| 欧美18vide0sex性极品| 男人的鸡插入美女的小穴| 香蕉视频免费看国产精品| 天天透天天插天天日| av熟女乱一区二区三区| 99久久久久久久久96久久| 狠狠色丁香久久综合频道日韩| 富婆按摩高潮一区二区三区91| av色伊人久久综合一区二区| 青青草国产免费在线观看| 蓝莓小视频在线观看| 极品美女少妇高潮喷水| 国产亚洲高清在线观看| 999精品视频免费看| 中文字幕av影片免费在线观看| www人妻一区二区| 国产区精品一区二区不卡中文| 日韩欧美免费看的惊悚片电影| 欧美丝袜办公室在线91| 亚洲一级中文字黄色片| 视频一区 欧美情色| 国产精品久久性欧美| 国产 欧美 五月 激情| 搞黄色的网站在线观看| 自拍偷拍 欧美亚洲| 青青色在线视频精品观看| 亚洲国产伦理久久精品| 中国男人肏女人大屄的视频| 色丁香国产精品综合久久| 丰满熟妇人妻一区二区三区| 人妻少妇资源网av| 手机视频免费在线观看| 人妻 日韩 制服 中文 在线| 中文字幕+乱码+中文| 五十六十日本老熟妇牲| 人妻在线一区二区三区| 午夜美女直播福利视频| kendralust熟女少妇| 麻豆电影国产一区在线观看| 自拍偷拍国产欧美精品| 日本不卡视频免费播放| 高潮少妇高潮久久精品99| 免费网站黄色在线观看不卡| 操女人逼逼好爽啊操| 中文字幕久久五月天| 欧美亚洲日产国产综合| 男女上下差差发哈插插插| 卡通动漫中文字幕在线观看| 中文字幕中文字幕在线一区| 性色蜜月av一区二区三区| 久久古典武侠第1页777| 涩爱av一区二区在线播放视频| 好紧好湿好爽好大A视频| 久产久91精国九品打| 国产精品免费观看av| 宾馆偷拍一区二区三区| 亚洲欧美清纯另类图片小说| 人人爽人人爽人人妻| 少妇厨房激情做爰欧美| 国产又黄又高潮又a的视频| 在线观看免费精品一区| av在线免费观看一区| 大逼小逼操大屌视频| xxoo视频免费在线观看| 公交车人妻免费视频| 天天干天天做天天摸| 亚洲女人毛毛多毛耸耸| 欧美口爆吞精一区二区三区| 91精品丝袜一区二区| 中文字幕 av 在线| 日韩人妻熟妇精品xxx| 午夜香蕉爽爽爽av| 玩弄人妻少妇精品视频在线 | 日韩一级黄色片免费在线观看| 国产主播精品在线一区| 男人的鸡插入美女的小穴| 91免费福利视频专区| 日韩一二三在线视频播放 | 有故事情节的美女免费日逼视频| 2017夜夜操天天操| 视频一区二区在线观看视频| 天天插天天日天天操天天干| 午夜少妇成人人妻av| 人妻精品无码一区二区三区百花| 国产综合欧美日韩在线观看| 欧美成在线在线视频| 视频一区二区在线观看视频| 国产免费公开视频在线播放| 几把操女的逼喷水视频| 国产免费观看av在线| 国产精品久久久免费99 | 97人妻人人爱人人澡人人爽| 人妻少妇精品视中文字幕国语 | 日日夜夜操国产av| 手机视频免费在线观看| 成人免费午夜精品一区二区| av看片资源网手机版在线播放| 亚洲美女啪啪邪恶视频| 在线人妻中文av导航| 极品扒开粉嫩小av一区二区| 国产三级中文字幕av| 亚洲精品在线免费观看视频| 亚洲精品中文字幕原千岁 | 国产99热这里有精品| 淫色网亚洲av日韩av| 亚洲成电影在线观看青青| 亚洲天堂av成人在线观看| 91午夜免费在线视频| 操骚逼啊啊啊叫一区二区三区| 亚洲图片av伦理三级| 小少妇久久久久久久| 爱妃视频av一区二区| 亚洲午夜激情视频在线播放| 亚洲精品一二三在线观看| 精品熟妇丰满人妻视频| 91麻豆天美精东蜜桃专区| 在线观看中文字幕91| 欧美人体一区二区视频| 大香蕉网成人在线观看| 狠狠操视频在线免费观看| 黄片网址在线观看视频| 在线观看麻豆免费视频| 国产日韩欧美高清无网码| 成人自拍在线观看视频| 最新国产剧情在线一区| 亚洲欧美日本高清在线观看| 天天干狠狠插夜夜操| 无码丝袜人妻高跟鞋| 可以在线观看的av网站| 2021国产麻豆剧传媒精品入口| 免费在线观看成人激情视频| 日韩三级 欧美精品| 欧美vide0sde极品另类| 亚洲一级中文字黄色片| 九九热线这里只有精品| 精品色欲久久久青青青人人爽| 成人欧美久久久久美婷婷| 草莓视频精品在线观看| 天天操日日干夜夜操| 亚洲欧美另类离制服丝袜| 在线观看亚洲视频一区二区 | 欧美黄色网黄色欧美网| 国产99热这里有精品| 日本一区二区三区高清在线| 国产91色婷婷手机在线| 污视频免费网站观看| 亚洲一区二二三区在线gk| 自拍偷拍国产欧美精品| 人妻精品无码一区二区三区百花| 欧美三级不卡在线播放 | 99成全re视频免费观看在线看| 美女少妇一区二区久久久| 国产青青自拍视频在线观看看| 欧美大屁股撅起来射精视频| 欧美日韩高清无毒不卡| 免费观看亚洲欧洲在线视频| 日韩精品免费人成视频| 好色av一区二区三区四区| 中文字幕亚洲情色在线观看| youjizz少妇日本| 美女被插免费视频网站| 天天操日日干夜夜操| 又大又黄又粗又爽少妇毛片 | 邪恶老湿精品一区二区| 亚洲精品欧美日韩专区免费| 韩国美女主播福利在线| 中文字幕人妻不卡久久| 最近的中文字幕第二页| 东京热tokyo黑人系列| 国产97精品在线免费看| 亚洲专区 欧美日韩| 欧洲老妇人一区二区三区| 91精品丝袜人妻久久久久久| 在线观看免费a级电影| 国产精品久久性欧美| 熟妇人妻一区二区三区| 人妻一区二区三区中文字幕免费| 91久久美利坚合众国保护| 天天透天天插天天日| 欧洲av网址在线观看| 床戏高潮呻吟声片段大全| 91精选国产九色porny| xxoo视频免费在线观看| 自拍偷拍国产欧美精品| 九九热线这里只有精品| 国产精品网站一区在线观看 | 亚洲经典国产一区二区三区| 中文字幕a区一区三区| 邪恶老湿精品一区二区| 啪啪啪啪啪啪啪啪啪日本| 亚洲国产成人爱av网站| 欧美极品少妇αv另类| 日韩专区欧美专区第五页| 亚洲成电影在线观看青青| 国产97日韩在线观看| 91精品久久一区二区| 色尼玛图片亚洲综合| 夜夜撸夜夜干夜夜操| 中文字幕乱码熟女人妻水蜜桃| 国产天美传媒剧免费观看| 人妻女教师的沦陷大明| 蓝莓小视频在线观看| 国产精品网在线观看| 一本久道久久综合狠狠躁| 亚洲码和欧洲码的尺码| 白丝高中生被靠操在观看| 日本人妻偷人妻中文字幕| 在线观看视频一区二区精品| 50岁老熟女高潮喷水了| 免费一区二区三区香蕉| 97超碰在线中文字幕精品| 天天插天天射天天日天天干| 91在线观看青青超碰| 男人的天堂在线免费av| 天天操天天舔天天操| 欧美老熟妇在线一区二区三区 | 亚洲图片偷拍30pxxx| 精品中文字幕高清久久久久三级| 国产一级免费观看av网站| av熟女乱一区二区三区| 欧美亚洲变态另类在线观看| 亚洲女子4x100米接力决赛| 亚洲激情四射在线观看视频| 午夜一分钟视频免费在线观看| 亚洲男人天堂2025| 日本乱理三级在线观影视频| 亚洲mv在线免费观看| 韩国美女视频在线观看18+| 国产成人18黄网站免费观看| 在线观看国产区一区二| 国产无套水多大学生性色AV| 在线观看免费a级电影| 94老司机福利社精品视频| 日韩欧美在线综合网高清| 日日夜夜精品视频观看| 黄片激情视频国产免费| 精品国产一区二区三区欧美精品| 午夜无码精品一区二区三区| 可以免费直接观看的av| 熟女视频一区二区在线观看| 久久精品日产第一区二区三区| 狠狠添狠狠添狠狠添免费出高潮水 | 欧美黑人一级性视频| 日本性生活视频观看免费| 91瑟瑟视频在线观看| 日本成人av在线免费看| 中文在线播放一区二区三区 | 人妻少妇久久中文字幕密拍| 国产成年女人在线观看| 天天综合网精品视频天天看| 九一欧洲国产无码在线| 久产久91精国九品打| 亚洲欧美熟妇另类久久久久久| 欧美日本一区二区三区精品| 男人的天堂av 色噜噜| 精品人妻一区二区三区18p| 欧美一区二区三区在线爱爱| 91久久久久久久电影| 365日日夜夜精品视频| 天天日天天干天天啪天天射| 欧美亚洲自拍偷拍xxx| 大香蕉在线福利导航| 成年免费毛片视频不卡| 国产在线成人精选视频| 亚洲av永久无码精品尤物| 欧美猛少妇色xxxxxhd| 色噜噜狠狠一区二区| 久久久久久久久91精品视频| 少妇张开腿让我爽了一夜视频| 亚洲情色成人精品视频| 女友97年白嫩漂亮在线看| 亚洲av综合在线观看免费| 91popny熟女九色| av熟女40到50岁名字| 日日夜夜草日日夜夜干| 中文乱码在线观看一区| 亚洲av永久无码精品尤物| 蜜臀国产精品久久久久久| 亚洲 欧美视频在线| 超级碰免费人妻97| 51国精产品一区二区三| 欧美视频免费在线看| 在线观看免费a级电影| 亚洲最快不卡av综合| 777精品久久久久久久| 少妇喷水视频在线观看| 国产精品网在线观看| 尹人香蕉综合网在线观看| 亚洲短视频自拍偷拍| 人妻色噜噜噜噜一区二区| 8x8x国产在线观看一区二区| 国产成人自拍在线播放| 一级黄色片特级黄色片| 国产又黄又高潮又a的视频| 国产手机av免费在线看片不卡| 国产寡妇又爽又紧又湿视频| 九色视频在线观看网址| 在线视频 中文字幕 一区二区| 青青国产的视频在线播放| 青青国产的视频在线播放| 中文字幕 av 在线| 中文字字幕在线中文乱码2019| 91久久精品视频地址| 国产午夜精品一区二区不| 韩国电影年轻的妈妈7| 人妻出轨av中文字幕| 超碰av在线一区二区三区| 国产精品一级片免费看| 日韩精品性色一区二区在线观看| 手机在线看日韩av资源| 色偷偷东京热男人的天堂| 国内在线精品视频在线观看| 欧美专区在线观看视频| 92大香蕉一区二区三区| 91九色成人原创视频| 91激情视频在线视频| 国产91福利在线导航| 日本亚洲美女视频一区| 中文字幕一区二区720p| 色屁屁一区二区三区视频国产| 日韩激情又爽aaaaa级| 午夜美女操逼高潮免费视频| 中文字幕日产av一二三区| av在线免费观看一区| 午夜美女操逼高潮免费视频| 精品少妇人妻av免费麻豆| 91中文字幕yellow| 17c日韩在线观看| 男人的鸡插入美女的小穴| 精品久久久免费av| 国产97精品在线免费看| a区精品视频在线观看| 91在线精品一区二区毛片| 在线视频成人青青草久热| 日本久久久久久久久人妻视频| 国产精品久久久久久久综合av | japanese国产在线播放| 在线观看免费a级电影| 亚洲黄色小视频网址| 久久精品aⅴ无码中文字字幕蜜桃| 久久久久久久毛片5| 中文字幕少妇av一区二区三区| 久久久亚洲av成人网人人| 欧美色视频日本片免费看| 亚洲另类视频图片小说| 亚洲经典国产一区二区三区 | 91最新资源在线观看| 好大好粗好爽好黄c黄片| 一色桃子av人妻熟女完整版| 一区二区三区高清在线| 99久久久久久久久96久久| 天天插天天干天天爽| 人妻熟女中文字幕电影| 国产成人自拍在线播放| 日韩欧美亚洲精品高清国产| 国产乱人伦Av在线麻豆A| 精品国产成人在线免费| 成人av黄片免费在线观看专区| 亚洲黄片在线免费播放| 国内偷拍视频在线观看| 丰满女人的毛片久久久久久| 午夜dj在线观看完整版| 一卡二卡成人久久精品| 青青操在线超碰传媒| 玩弄饥渴放荡美熟妇岳| 国产免费av天堂蘑菇视频| 精品国产专区91精品| 深夜黄色福利网站在线观看| AV成人国产免费久久精品| 九色91在线只有精品| 亚洲经典国产一区二区三区| 99久久国产亚洲精品| 欧美一区二区三不卡| 亚洲精品在线免费观看视频| 日韩一二三区免费播放视频| 日韩中文字幕一级乱码在线亚洲| 91新视频在线免费观看| 日韩人妻无码一区2区3区| 一级黄色片特级黄色片| 亚洲成电影在线观看青青| 日韩夫妻性生活视频在线观看免费| 天天日天天爱天天玩| 欧美性感美女高潮视频| 真实国产乱子伦一区| 777爽死你无码免费看一二区| 国产性感美女诱惑免费av| 蜜桃亚洲av优女av综合久久久| 五月婷婷丁香中文字幕亚洲一区| 天堂av中文官网在线| 日本老熟女人体艺术| 国产精品网站一区在线观看| 日韩精品视频网站免费观看| 欧美性感美女高潮视频| 中文字幕久久五月天| 99精品久久久久久噜噜| 最近的中文字幕一区二区| 国产午夜精品在线播放| 日本aaaaa特黄| 日本xxxxx久久| 精品久久久福利国产| 国产亚洲高清在线观看| 强d乱码中文字幕熟女导航| 精品国产成人在线免费| 欧洲亚洲国产永久精品| 六月丁香六月在线视频| 国产大全视频在线观看| 亚洲国产成人久久无码| 人妻性奴隶免费观看| 最新黄色天堂av在线资源| 五月天色婷婷亚洲欧美| 亚洲熟妇少妇一区二区| 国产福利小视频在线免费观看| 国产 欧美 五月 激情| 天天操,天天射,天天日| 成人欧美网站免费直接看| 床戏高潮呻吟声片段大全| 亚洲精品视频在线99| 亚洲国产成人久久无码| 几把操女的逼喷水视频| 午夜激情片免费在线观看| 中文字幕99精品一区| 白丝高中生被靠操在观看| 综合日韩人妻一区二区三区| 色婷婷综合欧美日韩亚洲| 欧美在线一区二区三区| 日本二区三区精品免费| 日本女人牲交的视频| 强行进女小姪女小芳| 人妻斩43r熟女人妻| 成人两性色午夜视频免费88AV| 韩国三级国产精品一区| 天天爱天天做天天舔| 亚洲情色成人一二三区| 欧美日韩国产免费福利| 天天射天天舔天天看| 亚洲一区二区三区视频免费观看| 日韩不卡免费一区二区三区视频| 蜜臀av在线观看一区| 日韩精品视频啊啊啊| 操骚逼啊啊啊叫一区二区三区| 91综合久久久久久久久久久| 日本xxxxx久久| 日韩午夜福利三级经典| 在线观看免费精品一区| 亚洲av日韩美aⅴ| 国产精品一国产精品免费| 国产免费午夜精品视频| 成人涩涩小片视频日本| 免费在线视频 中文字幕| 亚洲和黑人特黄色片| 国产婷婷色三区二区一区| 国产黄片一区在线观看| caopron在线成人免费| 国产性感美女诱惑免费av| 亚洲插美女综合av| av色综合久久天堂av…| 亚洲av蜜臀在线观看| 欧美图区一区二区三区| 国产手机av免费在线看片不卡| 国产免费午夜精品视频| 亚洲av蜜臀在线观看| 色综合人妻中文字幕| 在线观看免费精品一区| 污污污的视频免费在线观看| 日韩av在线免费观看中文字幕| 亚洲伊人第一综合网| 精华液一区二区区别| 久久中文字幕永久第一页| 在线视频在线观看你懂的| 亚洲av日韩av在线综合av| 亚洲黄色片免费在线| 最近免费中文字幕日韩| 青青草毛片在线观看| 日本欧美视频免费观看| 久久永久免费专区人妻| 91精品国产在热久久| 国产主播精品在线一区| 久久精品乱码中文字幕| 老外插美女在线视频| 92大香蕉一区二区三区| 亚洲精品无码中文字幕专区| 亚洲av无日韩毛片久久| 男男小视频在线观看| 2020最新中文字幕在线| 超碰青青草原免费在线观看97| 最新69视频在线观看| 揉老熟女老熟妇aaa| v888av精品少妇| 看国产剧的免费软件| av在线播放网址大全| 男插女下面真人视频| 中文字幕乱码视频日本一区二区| 日韩亚洲中文在线视频| 国产91边对白在线播放| 精品国产成人在线免费| 中文字幕乱码精品一区二区三区| 免费看亚洲av的网站| 中文字幕 亚洲轻轻av| 蜜桃视频app网站入口| 欧美老熟妇在线一区二区三区 | 天天摸天天舔天天透| 91午夜免费在线视频| 青青操一区二区三区| 福利动态视频午夜日本免费| 成人午夜福利视频镇东影视| 美女扒开腿让男人桶网站 | 亚洲国产精品日韩综合网| 蜜桃av在线观看网站| 在线观看国产剧情av| 亚洲 欧美视频在线| 9999精品久久久久| av自拍偷拍一区二区| 狂野欧美激情性xxxx| 日韩九色pron国产日韩| 亚洲天堂av在线免费看| 熟女成人国产精品视频| 日本欧美在线免费观看视频| 91精品久久久久久久免费看| 日本不卡视频免费播放| 熟妇人妻一区二区三区| 国产成人自拍精品在线| 17c久久精品国产亚洲av蜜柚| 欧美精品日韩不卡免费| 午夜一分钟视频免费在线观看 | 男人的鸡插入美女的小穴| 床戏高潮呻吟声片段大全| 亚洲欧美另类离制服丝袜| 亚洲在线视频一区二区| 亚洲中字幕日产AV片在线| 在线视频成人青青草久热| 国产视频播放一区二区三区| 91九色国产自拍视频| 久久久精品国产亚洲av水| 亚洲熟女资源一区二区| 青青草国产免费在线观看 | 小岳母在线观看完整版| 少妇花园流浆嗯嗯张开视频| 日本欧美视频免费观看| 中文字幕亚洲专区婷婷| 97超碰人人澡香蕉| 乱色熟女综合一区二区三区四| 日本道高清免费在线视频| 国产老妇女免费视频| 美女扒开腿让男人桶网站| 日本少妇一二三视频| 91久久久久精品一区二区三区| 卡通动漫中文字幕在线观看| 大香蕉在线欧美观看| 自由的成熟女性色视频| 青青草视频在线观看播放影院免费| 中文字幕在线观看观看av? | 天天插天天射天天日天天干| 亚洲黄色片免费在线| 成年人免费视频网站在线播放| 可以免费看黄色的网址| 亚洲精品欧美日韩专区免费| 老熟妇乱一区二区三区| 日韩亚洲欧美中文在线电影| 漂亮人妻视频免费在线播放| 国产天美传媒剧免费观看| 人妻夜夜爽av网站| 男人和女人哪个更色| 免费一级特黄特色大片88av| 久久久久免费特级黄片| 99在线只有精品视频| 极品美女少妇高潮喷水| 尤物在线免费视频观看| 天天摸天天天天日少妇av| 日本在线不卡视频播放| 97人妻人人爱人人澡人人爽| 天天插天天日天天操天天干| 搞黄色的网站在线观看| 天天插天天日天天操天天干| 亚洲精品午夜福利久久| 蜜桃精品噜噜噜成人av小说| 国产最好看的特效大片av| 亚洲精品av成人在线观看| 精品人妻一区二区三区18p| 欲色天天网综合久久| 欧美乱码卡1卡二卡3卡4| 最新97在线视频资源| 在线能看的网站你懂得| 亚洲午夜短视频在线| 欧美亚洲国产第一二区| 日韩一二三区免费播放视频| 欧美一区二区三区视频在线观看| 日本欧美在线免费观看视频| 小岳母在线观看完整版| 91青青青青艹视频在线观看 | 在线观看免费的黄色片| 精品色欲久久久青青青人人爽| 欧美日韩中文国产一区| 老熟妇乱一区二区三区| 亚洲av最新资源在线| 四十路の五十路熟女网址| 日本一区二三区好的精华液| 91久久精品视频地址| 欧美极品少妇αv另类| 91极品尤物国产在线播放| 欧美在线一区二区三区| 国产一级久久久久高清版| 99精品午夜一区二区三区| 成人国产av精品麻豆入口| 人妻视频在线免费观看| av色伊人久久综合一区二区| 天天日天天草天天插| 国产亚洲精品137片内射| 精品国产专区91精品| 欧美猛少妇色xxxxxhd| 成人av毛片免费观看| 亚洲综合一区二区在线视频| 免费观看黄片视频91| 亚洲av狠狠的爱一区二区 | 91精选一区二区三区四区| 漂亮人妻视频免费在线播放| 2021久久国自产拍精品| 久久久久久久岛国免费播放| 久久久亚洲av成人网人人 | 天天插天天日天天操天天干| 成人两性色午夜视频免费88AV| 日本黄站一区二区在线观看| 青青久在线观看免费视频| 91九色popny人妻| 加勒比久久综合久久678| 国产午夜精品在线播放| 91热精品视频在线播放| 欲求不满的邻居人妻一区二区三区 | 大鸡吧淫水四射视频| 老司机福利社免费视频| 在线亚洲视频免费看| 99999精品视频在线观看| 青青国产的视频在线播放| 天天干人人干天天操| 中国精品视频在线观看一区二区| 97国产精品人人爽人人做| 无码大荫蒂视频在线| 日韩在线视频观看你懂的| 日本熟妇三十熟女精品区| av中文字幕 中文字幕第一页| 图片区小说区自拍偷拍区| 91精品丝袜久久久| 最新黄色天堂av在线资源| 99久久99久久综合| 91精品丝袜一区二区| 日韩九色pron国产日韩| 在线视频 中文字幕 一区二区| 人妻性奴隶免费观看| 成年人免费视频网站在线播放| 熟妇人妻一区二区三区| 这里只有精品99视频| 老外插美女在线视频| 野花日本高清在线观看| 成人免费xxxx在线| 亚洲另类校园春色小说| 欧美 亚洲 国产 日韩一| 蜜臀av在线观看一区| 国产免费观看av在线| 午夜高清在线观看免费| 日韩午夜福利三级经典| 国产午夜精品人妻中文字一幂| 精品国产成人在线免费| 天天日天天干天天啪天天射| 中文字幕乱码人妻在线观看| 粗大挺进朋友人妻身体里国产| 日本成年人大片免费观看| 玩儿女人操逼大片儿| xxoo视频免费在线观看| 蜜桃黄视频在线观看| 国产精品久久久免费99| 大香蕉红杏在线观看| 欧美码一二三区线观看| 两人在沙发激情的视频| 淫色网亚洲av日韩av| 国产精品一级片免费看| 中文幕av一区二区三区佐山爱| 欧美色高清vvvvvv| 清纯国模自拍视频在线观看| 168黄页网免费观看视频| 99热精品夜夜爽伊人| 熟女人妻 在线观看| 国产乱人伦Av在线麻豆A| 日韩一二三区免费播放视频| 日本一区二区三区综合网| 免费在线观看不卡高清av| 特黄特黄的日韩爽大片| 91九色popny人妻| 91福利在线观看免费| 天堂久久精品无码一区二区| 亚洲综合网男人的天堂| 538精品新视频在线观看 | 91成人在线观看免费| 中文乱码字幕人妻精品| 亚洲精品一区二区三区av| 在线免费观看亚洲v| 精品国产专区91精品| 成人av黄片免费在线观看专区| 99久久国产综合精品五月天| 在线播放三级黄色日韩av| 天天插天天干天天爽| 啊啊啊啊在线视频观看| 色www亚洲国产张柏芝| 亚洲人成在线1国产盗拍| 国产成年人性生活视频| av自拍偷拍一区二区| 淫色网亚洲av日韩av| 欧美口爆吞精一区二区三区| 色综合天天综合高清网国产在线| av熟女乱一区二区三区| 自拍偷拍国产欧美精品| 天天看天天舔天天摸| 日韩少妇中文字幕一区| 欧美一区二区三不卡| 成人免费午夜精品一区二区| 天天爱天天做天天舔| 中文字幕在线观看观看av?| 一卡二卡成人久久精品| 亚洲国产丰满熟女一区二区三区 | 色姑娘天天干天天操| 日韩夫妻性生活视频在线观看免费 | 欧美成人性生活一级片| 麻豆电影国产一区在线观看| 韩国的黄萝卜是怎么腌制的| 免费一级特黄特色黄录像| 天天操日日干夜夜射| 999精品欧美一区二区三区黑人| 护士色视频亚洲婷婷| 日本激情在线看一区二区三区| 91tsav人妻国产| 2023天天色天天操| 国产名人亚洲视频中文字幕| 凹凸视频这里只有精品| 国产亚洲精品137片内射| 男人天堂2017在线| 亚国产亚洲亚洲精品视频| 中文字幕一区二区三区人妻| 美女穿白丝被啪啪到高潮| 精品亚洲永久免费精品网站| 少妇张开腿让我爽了一夜视频 | 日本国产福利视频在线观看| 毛片中文aaa五月天| 亚洲无码免费一二三区视频| 亚洲欧洲视频一二三区| 加勒比日本一区二区三区| 日本少妇人妻xxxxx16| 亚洲天堂啪啪爱之巢穴| 韩国电影年轻的妈妈7| 北岛玲精品一区二区三| 亚洲日韩色欧另类欧美色吊丝| 可以免费看黄色的网址| 亚洲天堂国产精品乱伦一区| 欧美日韩高清无毒不卡| 天天日天天爱天天玩| av中文字幕 中文字幕第一页| 两人在沙发激情的视频| 日本成人av在线免费看| 中文字幕久久久aⅴ大片| 男人日女人鸡鸡天天视频官方 | 亚洲av蜜臀在线观看| 国内自拍偷拍视频第一页| 污污污的视频免费在线观看| 日韩一二三区免费播放视频| 欧美老熟妇乱子伦视频在线观看 | 亚洲欧美清纯另类图片小说| 人成免费视频一区二区三区 | 亚洲最新欧美偷拍视频|