日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

Android的Surface的创建

發(fā)布時(shí)間:2023/12/19 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 Android的Surface的创建 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ViewRootImpl管理著整個(gè)view tree。 對(duì)于ViewRootImpl.setView(),我們可以簡(jiǎn)單的把它當(dāng)做一個(gè)UI渲染操作的入口。

http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/android/view/WindowManagerImpl.java

public void setView(View view, WindowManager.LayoutParams attrs, View panelParentView) {
    ...
    //mWindowSession是一個(gè)aidl,ViewRootImpl利用它來(lái)和WindowManagerService交互
    //mWindow是一個(gè)aidl,WindowManagerService可以利用這個(gè)對(duì)象與服務(wù)端交互
    //mAttachInfo可以理解為是一個(gè)data bean,可以跨進(jìn)程傳遞
    res = mWindowSession.addToDisplay(mWindow, mSeq, mWindowAttributes,
            getHostVisibility(), mDisplay.getDisplayId(), mWinFrame,
            mAttachInfo.mContentInsets, mAttachInfo.mStableInsets,
            mAttachInfo.mOutsets, mAttachInfo.mDisplayCutout, mInputChannel);
    ...
}

ViewRootImpl.setView()方法會(huì)向WindowManagerService請(qǐng)求添加一個(gè)Window,mWindowSession.addToDisplay()跨進(jìn)程最終調(diào)用到了WindowManagerService.addWindow():
http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java

public int addWindow(Session session, IWindow client...) {
    ...
    //WindowState用來(lái)描述一個(gè)Window
    final WindowState win = new WindowState(this, session, client, token, parentWindow,
                appOp[0], seq, attrs, viewVisibility, session.mUid,
                session.mCanAddInternalSystemWindow);
    ...
    win.attach();  //會(huì)創(chuàng)建一個(gè)SurfaceSession

    mWindowMap.put(client.asBinder(), win); //mWindowMap是WindowManagerService用來(lái)保存當(dāng)前所有Window新的的集合
    ...
    win.mToken.addWindow(win); //一個(gè)token下會(huì)有多個(gè)win state。 其實(shí)token與PhoneWindow是一一對(duì)應(yīng)的。
    ...
}

http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/wm/WindowState.java

 void attach() {
       if (WindowManagerService.localLOGV) Slog.v(
            TAG, "Attaching " + this + " token=" + mToken
            + ", list=" + mToken.windows);
        mSession.windowAddedLocked();
   }

WindowStateWindowManagerService用來(lái)描述應(yīng)用程序的一個(gè)Window的對(duì)象。上面注釋我標(biāo)注了win.attach(),這個(gè)方法可以說(shuō)是WindowSurfaceFlinger鏈接的起點(diǎn),它最終會(huì)調(diào)用到Session.windowAddedLocked():
http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/wm/Session.java

void windowAddedLocked(String packageName) {
    ...
    if (mSurfaceSession == null) { 
        ...
        mSurfaceSession = new SurfaceSession();
        ...
    }
}

http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/android/view/SurfaceSession.java

//SurfaceSession類的構(gòu)造方法
public final class SurfaceSession {
    private long mNativeClient; // SurfaceComposerClient*

    public SurfaceSession() {
        mNativeClient = nativeCreate(); 
}

這里調(diào)用了native方法nativeCreate(),這個(gè)方法其實(shí)是返回了一個(gè)SurfaceComposerClient指針。那這個(gè)對(duì)象是怎么創(chuàng)建的呢?

SurfaceComposerClient的創(chuàng)建

http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/jni/android_view_SurfaceSession.cpp

static jlong nativeCreate(JNIEnv* env, jclass clazz) {
    SurfaceComposerClient* client = new SurfaceComposerClient(); //構(gòu)造函數(shù)其實(shí)并沒(méi)有做什么
    client->incStrong((void*)nativeCreate);
    return reinterpret_cast<jlong>(client);
}

即構(gòu)造了一個(gè)SurfaceComposerClient對(duì)象。并返回它的指針。這個(gè)對(duì)象一個(gè)應(yīng)用程序就有一個(gè),它是應(yīng)用程序與SurfaceFlinger溝通的橋梁,為什么這么說(shuō)呢?在SurfaceComposerClient指針第一次使用時(shí)會(huì)調(diào)用下面這個(gè)方法:

//這個(gè)方法在第一次使用SurfaceComposerClient的指針的時(shí)候會(huì)調(diào)用
void SurfaceComposerClient::onFirstRef() {
    ....
    sp<ISurfaceComposerClient> conn;
    //sf 就是SurfaceFlinger
    conn = (rootProducer != nullptr) ? sf->createScopedConnection(rootProducer) :
            sf->createConnection();
    ...
}

即通過(guò)SurfaceFlinger(它本身具有跨進(jìn)程通信的能力)創(chuàng)建了一個(gè)ISurfaceComposerClient對(duì)象:

http://androidxref.com/6.0.1_r10/xref/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp

sp<ISurfaceComposerClient> SurfaceFlinger::createConnection() {
    return initClient(new Client(this)); //initClient這個(gè)方法其實(shí)并沒(méi)有做什么,
}

即構(gòu)造了一個(gè)Client對(duì)象,Client實(shí)現(xiàn)了ISurfaceComposerClient接口。是一個(gè)可以跨進(jìn)程通信的aidl對(duì)象。即SurfaceComposerClient可以通過(guò)它來(lái)和SurfaceFlinger通信。除此之外它還可以創(chuàng)建Surface,并且維護(hù)一個(gè)應(yīng)用程序的所有Layer(下文會(huì)分析到它是什么)。它是一個(gè)十分重要的對(duì)象,我們先來(lái)看一下它的組成,它所涉及的其他東西在下文分析中都會(huì)講到:
http://androidxref.com/6.0.1_r10/xref/frameworks/native/services/surfaceflinger/Client.h

class Client : public BnSurfaceComposerClient
{
public:
    ...
    void attachLayer(const sp<IBinder>& handle, const sp<Layer>& layer);
    void detachLayer(const Layer* layer);
    ...
private:
    // ISurfaceComposerClient interface。   gbp很重要,它維護(hù)這一個(gè)應(yīng)用程序的渲染 Buffer隊(duì)列
    virtual status_t createSurface(...sp<IBinder>* handle, sp<IGraphicBufferProducer>* gbp);

    virtual status_t destroySurface(const sp<IBinder>& handle); 

    //跨進(jìn)程通信方法
    virtual status_t onTransact(uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags);
    ...

    // constant
    sp<SurfaceFlinger> mFlinger;

    // protected by mLock
    DefaultKeyedVector< wp<IBinder>, wp<Layer> > mLayers; // 一個(gè)應(yīng)用程序的所有Layer
    ...
};

經(jīng)過(guò)上面這一頓源碼分析,我們大概知道了ViewRootImpl.setView()所引發(fā)的主要操作:

WindowManagerService創(chuàng)建了一個(gè)WindowState。用來(lái)表示客戶端的一個(gè)Window
WindowManagerService創(chuàng)建了一個(gè)SurfaceSession,SurfaceSession會(huì)與SurfaceFlinger構(gòu)建鏈接,創(chuàng)建了一個(gè)SurfaceComposerClient對(duì)象,一個(gè)應(yīng)用程序只具有一個(gè)這個(gè)對(duì)象。
SurfaceComposerClient創(chuàng)建了一個(gè)Client, 這個(gè)對(duì)象十分重要,它維護(hù)這應(yīng)用程序的渲染核心數(shù)據(jù),并負(fù)責(zé)與SurfaceFlinger通信。

經(jīng)過(guò)上面的步驟,應(yīng)用程序的ViewRootImpl已經(jīng)被WindowManagerService識(shí)別,并且應(yīng)用程序已經(jīng)與SurfaceFlinger建立連接。即創(chuàng)建了SurfaceComposerClientClient對(duì)象

文章開始就已經(jīng)說(shuō)了SurfaceWindow(ViewRootImpl)的UI載體,那Surface是在哪里創(chuàng)建的呢?

Surface的創(chuàng)建

其實(shí)一個(gè)ViewRootImpl就對(duì)應(yīng)一個(gè)Surface。

http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/android/view/Surface.java

這點(diǎn)可以通過(guò)ViewRootImpl的源碼看出:

ViewRootImpl在構(gòu)造的時(shí)候就new 了一個(gè) Surface。但其實(shí)這個(gè)新new的Surface并沒(méi)有什么邏輯,它的構(gòu)造函數(shù)是空的。

http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/android/view/ViewRootImpl.java

public final class ViewRootImpl implements ViewParent,
        View.AttachInfo.Callbacks, HardwareRenderer.HardwareDrawCallbacks {
//...
public final Surface mSurface = new Surface();
//...
public void setView(View view, WindowManager.LayoutParams attrs, View panelParentView) {
    ...
    requestLayout(); //susion 請(qǐng)求layout。先添加到待渲染隊(duì)列中  
    ...
    res = mWindowSession.addToDisplay(mWindow, ...); //WindowManagerService會(huì)創(chuàng)建mWindow對(duì)應(yīng)的WindowState
    ...
}
 @Override
public void requestLayout() { if (!mHandlingLayoutInLayoutRequest) { checkThread(); mLayoutRequested = true; scheduleTraversals(); } } }

即在向WindowManagerService請(qǐng)求創(chuàng)建WindowState之前,調(diào)用了requestLayout(),這個(gè)方法會(huì)引起ViewRootImpl所管理的整個(gè)view tree的重新渲染。它最終會(huì)調(diào)用到scheduleTraversals():

http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/android/view/ViewRootImpl.java

void scheduleTraversals() {
    ...
    mChoreographer.postCallback(Choreographer.CALLBACK_TRAVERSAL, mTraversalRunnable, null);
    ...
}

scheduleTraversals()會(huì)通過(guò)Choreographer來(lái)post一個(gè)mTraversalRunnable,Choreographer接收顯示系統(tǒng)的時(shí)間脈沖(垂直同步信號(hào)-VSync信號(hào),16ms發(fā)出一次),在下一個(gè)frame渲染時(shí)控制執(zhí)行這個(gè)mTraversalRunnable。

但是mTraversalRunnable的執(zhí)行至少要在應(yīng)用程序與SurfaceFlinger建立連接之后。這是因?yàn)殇秩静僮魇怯?code>SurfaceFlinger負(fù)責(zé)調(diào)度了,如果應(yīng)用程序還沒(méi)有與SurfaceFlinger創(chuàng)建連接,那SurfaceFlinger當(dāng)然不會(huì)渲染這個(gè)應(yīng)用程序。所以在執(zhí)行完mWindowSession.addToDisplay(mWindow, ...)之后,才會(huì)執(zhí)行mTraversalRunnable:

final class TraversalRunnable implements Runnable {
    @Override
    public void run() {
        doTraversal();
    }
}

doTraversal()會(huì)調(diào)用到ViewRootImpl.performTraversals(),大部分同學(xué)可能知道這個(gè)方法是一個(gè)view treemeasure/layout/draw的控制方法:

private void performTraversals() {
    finalView host = mView; //mView是一個(gè)Window的根View,對(duì)于Activity來(lái)說(shuō)就是DecorView
    ...
    relayoutWindow(params, viewVisibility, insetsPending);
    ...
    performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);
    ...         
    performLayout(lp, mWidth, mHeight);
    ...
    performDraw();
    ...
}

Surface的具體創(chuàng)建就由relayoutWindow(params, viewVisibility, insetsPending)這個(gè)方法來(lái)完成的。這個(gè)方法會(huì)通過(guò)IPC調(diào)用到WindowManagerService.relayoutWindow():

http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/android/view/ViewRootImpl.java

private int relayoutWindow(WindowManager.LayoutParams params, ...) throws RemoteException {
    ...
    int relayoutResult = mWindowSession.relayout(mWindow,..., mSurface);
    ...
}

mWindowSession.relayout()方法的很多參數(shù),不過(guò)有一個(gè)十分重要的參數(shù)我沒(méi)有省略,就是mSurface。前面已經(jīng)分析了它就是一個(gè)空的Surface對(duì)象。其實(shí):

真正的Surface創(chuàng)建是由SurfaceControl完成的,應(yīng)用程序ViewRootImplSurface只是一個(gè)指針,指向這個(gè)Surface

下面就來(lái)看一下SurfaceControl是如何創(chuàng)建Surface的:

mWindowSession.relayout()會(huì)調(diào)用到WindowManagerService.relayoutWindow():

http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java

 //這里的outSurface其實(shí)就是ViewRootImpl中的那個(gè)Surface
public int relayoutWindow(Session session, IWindow client....Surface outSurface){ 
    ...
    result = createSurfaceControl(outSurface, result, win, winAnimator);  
    ...
}

private int createSurfaceControl(Surface outSurface, int result, WindowState win,WindowStateAnimator winAnimator) {
    ...
    surfaceController = winAnimator.createSurfaceLocked(win.mAttrs.type, win.mOwnerUid);
    ...
    surfaceController.getSurface(outSurface);
}

winAnimator.createSurfaceLocked實(shí)際上是創(chuàng)建了一個(gè)SurfaceControl。即上面是先構(gòu)造SurfaceControl,然后在構(gòu)造Surface

http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/wm/WindowStateAnimator.java

 SurfaceControl createSurfaceLocked() {
        final WindowState w = mWin;
        if (mSurfaceControl == null) {
           //...
             mSurfaceFormat = format;
                if (DEBUG_SURFACE_TRACE) {
                    mSurfaceControl = new SurfaceTrace(
                            mSession.mSurfaceSession,
                            attrs.getTitle().toString(),
                            width, height, format, flags);
                } else {
                    mSurfaceControl = new SurfaceControl(
                        mSession.mSurfaceSession,
                        attrs.getTitle().toString(),
                        width, height, format, flags);
                }
             //...
        }
        return mSurfaceControl;
    }        

SurfaceControl的創(chuàng)建

winAnimator.createSurfaceLocked其實(shí)是通過(guò)SurfaceControl的構(gòu)造函數(shù)創(chuàng)建了一個(gè)SurfaceControl對(duì)象,這個(gè)對(duì)象的作用其實(shí)就是負(fù)責(zé)維護(hù)Surface,Surface其實(shí)也是由這個(gè)對(duì)象負(fù)責(zé)創(chuàng)建的,我們看一下這個(gè)對(duì)象的構(gòu)造方法:

http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/android/view/SurfaceControl.java

long mNativeObject; //成員指針變量,指向native創(chuàng)建的SurfaceControl

private SurfaceControl(SurfaceSession session, String name, int w, int h, int format, int flags,
            SurfaceControl parent, int windowType, int ownerUid){
    ...
    mNativeObject = nativeCreate(session, name, w, h, format, flags,
        parent != null ? parent.mNativeObject : 0, windowType, ownerUid);
    ...
}

即調(diào)用了nativeCreate()并返回一個(gè)SurfaceControl指針:

http://androidxref.com/6.0.1_r10/xref/frameworks/native/libs/gui/SurfaceControl.cpp

static jlong nativeCreate(JNIEnv* env, ...) {
    //這個(gè)client其實(shí)就是前面創(chuàng)建的SurfaceComposerClinent
    sp<SurfaceComposerClient> client(android_view_SurfaceSession_getClient(env, sessionObj)); 
    sp<SurfaceControl> surface; //創(chuàng)建成功之后,這個(gè)指針會(huì)指向新創(chuàng)建的SurfaceControl
    status_t err = client->createSurfaceChecked(String8(name.c_str()), w, h, format, &surface, flags, parent, windowType, ownerUid);
    ...
    return reinterpret_cast<jlong>(surface.get()); //返回這個(gè)SurfaceControl的地址
}

即調(diào)用到SurfaceComposerClient.createSurfaceChecked():

http://androidxref.com/6.0.1_r10/xref/frameworks/native/libs/gui/SurfaceComposerClient.cpp

//outSurface會(huì)指向新創(chuàng)建的SurfaceControl
status_t SurfaceComposerClient::createSurfaceChecked(...sp<SurfaceControl>* outSurface..) 
{
    sp<IGraphicBufferProducer> gbp; //這個(gè)對(duì)象很重要
    ...
    err = mClient->createSurface(name, w, h, format, flags, parentHandle, windowType, ownerUid, &handle, &gbp);
    if (err == NO_ERROR) {
        //SurfaceControl創(chuàng)建成功, 指針賦值
        *outSurface = new SurfaceControl(this, handle, gbp, true);
    }
    return err;
}

上面這個(gè)方法實(shí)際上是調(diào)用Client.createSurface()來(lái)創(chuàng)建一個(gè)Surface。在創(chuàng)建時(shí)有一個(gè)很重要的參數(shù)sp<IGraphicBufferProducer> gbp,在下面源碼分析中我們也要重點(diǎn)注意它。這是因?yàn)閼?yīng)用所渲染的每一幀,實(shí)際上都會(huì)添加到IGraphicBufferProducer中,來(lái)等待SurfaceFlinger的渲染。
http://androidxref.com/6.0.1_r10/xref/frameworks/native/services/surfaceflinger/Client.cpp

status_t Client::createSurface(...)
{
    ...
    //gbp 直接透?jìng)鞯搅薙urfaceFlinger
    return mFlinger->createLayer(name, this, w, h, format, flags, windowType, ownerUid, handle, gbp, &parent);
}

SurfaceSurfaceFlinger中對(duì)應(yīng)的實(shí)體其實(shí)是Layer

我們繼續(xù)看一下mFlinger->createLayer()

http://androidxref.com/6.0.1_r10/xref/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp

status_t SurfaceFlinger::createLayer(const String8& name,const sp<Client>& client...)
{
    status_t result = NO_ERROR;
    sp<Layer> layer; //將要?jiǎng)?chuàng)建的layer
    switch (flags & ISurfaceComposerClient::eFXSurfaceMask) {
        case ISurfaceComposerClient::eFXSurfaceNormal:
            result = createBufferLayer(client,
                    uniqueName, w, h, flags, format,
                    handle, gbp, &layer); // 注意gbp,這時(shí)候還沒(méi)有構(gòu)造呢!
            break;
            ... //Layer 分為好幾種,這里不全部列出
    }
    ...
    result = addClientLayer(client, *handle, *gbp, layer, *parent);  //這個(gè)layer和client相關(guān)聯(lián), 添加到Client的mLayers集合中。
    ...
    return result;
}

SurfaceFlinger.createLayer()方法可以看出Layer分為好幾種。我們這里只對(duì)普通的BufferLayer的創(chuàng)建做一下分析,看createBufferLayer():

http://androidxref.com/6.0.1_r10/xref/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp

status_t SurfaceFlinger::createBufferLayer(const sp<Client>& client... sp<Layer>* outLayer)
{
    ...
    sp<BufferLayer> layer = new BufferLayer(this, client, name, w, h, flags);
    status_t err = layer->setBuffers(w, h, format, flags);  //設(shè)置layer的寬高
    if (err == NO_ERROR) {
        *handle = layer->getHandle(); //創(chuàng)建handle
        *gbp = layer->getProducer(); //創(chuàng)建 gbp IGraphicBufferProducer
        *outLayer = layer; //把新建的layer的指針拷貝給outLayer,這樣outLayer就指向了新建的BufferLayer
    }
    return err;
}

前面我說(shuō)過(guò)IGraphicBufferProducer(gbp)是一個(gè)很重要的對(duì)象,它涉及到SurfaceFlinger的渲染邏輯,下面我們就看一下這個(gè)對(duì)象的創(chuàng)建邏輯:

IGraphicBufferProducer(gbp)的創(chuàng)建

sp<IGraphicBufferProducer> BufferLayer::getProducer() const {
    return mProducer;
}

mProducer其實(shí)是Layer的成員變量,它的創(chuàng)建時(shí)機(jī)是Layer第一次被使用時(shí):

void BufferLayer::onFirstRef() {
    ...
    BufferQueue::createBufferQueue(&producer, &consumer, true); 
    mProducer = new MonitoredProducer(producer, mFlinger, this);
    ...
}

所以mProducer的實(shí)例是MonitoredProducer,但其實(shí)它只是一個(gè)裝飾類,它實(shí)際功能都委托給構(gòu)造它的參數(shù)producer:

BufferQueue.cpp

void BufferQueue::createBufferQueue(sp<IGraphicBufferProducer>* outProducer,
    ...
    sp<IGraphicBufferProducer> producer(new BufferQueueProducer(core, consumerIsSurfaceFlinger));
    sp<IGraphicBufferConsumer> consumer(new BufferQueueConsumer(core)); //注意這個(gè)consumer
    ...
    *outProducer = producer;
    *outConsumer = consumer;
}

所以實(shí)際實(shí)現(xiàn)mProducer的工作的queueProducerBufferQueueProducer。

所以構(gòu)造一個(gè)SurfaceControl所做的工作就是創(chuàng)建了一個(gè)SurfaceControl,并讓SurfaceFlinger創(chuàng)建了一個(gè)對(duì)應(yīng)的LayerLayer中有一個(gè)IGraphicBufferProducer,它的實(shí)例是BufferQueueProducer

可以用下面這個(gè)圖來(lái)描述SurfaceControl的創(chuàng)建過(guò)程:

從SurfaceControl中獲取Surface

我們回看WindowManagerService.createSurfaceControl(), 來(lái)看一下java層的Surface對(duì)象到底是個(gè)什么:

http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java
private int createSurfaceControl(Surface outSurface, int result, WindowState win,WindowStateAnimator winAnimator) {
    ...
    surfaceController = winAnimator.createSurfaceLocked(win.mAttrs.type, win.mOwnerUid);
    ...
    surfaceController.getSurface(outSurface);
}

上面我們已經(jīng)了解了winAnimator.createSurfaceLocked的整個(gè)過(guò)程,我們看一下surfaceController.getSurface(outSurface), surfaceControllerWindowSurfaceController的實(shí)例:

//WindowSurfaceController.java
void getSurface(Surface outSurface) {
    outSurface.copyFrom(mSurfaceControl);
}

//Surface.java
public void copyFrom(SurfaceControl other) {
    ...
    long surfaceControlPtr = other.mNativeObject;
    ...
    long newNativeObject = nativeGetFromSurfaceControl(surfaceControlPtr);
    ...
    mNativeObject = ptr; // mNativeObject指向native創(chuàng)建的Surface
}

Surface.copyFrom()方法調(diào)用nativeGetFromSurfaceControl()來(lái)獲取一個(gè)指針,這個(gè)指針是根據(jù)前面創(chuàng)建的SurfaceControl的指針來(lái)尋找的,即傳入的參數(shù)surfaceControlPtr:

android_view_Surface.cpp

static jlong nativeGetFromSurfaceControl(JNIEnv* env, jclass clazz, jlong surfaceControlNativeObj) {
    sp<SurfaceControl> ctrl(reinterpret_cast<SurfaceControl *>(surfaceControlNativeObj)); //把java指針轉(zhuǎn)化內(nèi)native指針
    sp<Surface> surface(ctrl->getSurface()); //直接構(gòu)造一個(gè)Surface,指向 ctrl->getSurface()
    if (surface != NULL) {
        surface->incStrong(&sRefBaseOwner); //強(qiáng)引用
    }
    return reinterpret_cast<jlong>(surface.get());
}

這里的ctrl指向前面創(chuàng)建的SurfaceControl,繼續(xù)追溯ctrl->getSurface():

sp<Surface> SurfaceControl::getSurface() const
{
    Mutex::Autolock _l(mLock);
    if (mSurfaceData == 0) {
        return generateSurfaceLocked();
    }
    return mSurfaceData;
}

sp<Surface> SurfaceControl::generateSurfaceLocked() const
{
    //這個(gè)mGraphicBufferProducer其實(shí)就是上面分析的BufferQueueProducer
    mSurfaceData = new Surface(mGraphicBufferProducer, false); 
    return mSurfaceData;
}

即直接new了一個(gè)nativie的Surface返回給java層,java層的Surface指向的就是native層的Surface。

所以Surface的實(shí)際創(chuàng)建可以用下圖表示:

經(jīng)過(guò)上面這個(gè)圖,也可以理解SurfaceControl為什么叫SurfaceControl了。

總結(jié)

以上是生活随笔為你收集整理的Android的Surface的创建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

婷婷精品国产欧美精品亚洲人人爽 | 亚洲在线日韩 | 狠狠色丁香婷婷综合久小说久 | 国产视频一区精品 | 伊人婷婷在线 | 西西www4444大胆在线 | 五月婷婷在线综合 | 亚洲成人av电影 | 国产一区在线看 | 久久99国产精品二区护士 | 性色av一区二区三区在线观看 | 国产综合激情 | 99 色| 日韩欧美精品一区 | 亚洲一区欧美激情 | 色多多视频在线观看 | 狠狠躁夜夜a产精品视频 | 99热亚洲精品 | 久久免费精品国产 | 手机av网站| 国内精品久久久久 | 国内精品视频在线 | 久久久久久久久国产 | 在线观看蜜桃视频 | 五月天com| 久草视频视频在线播放 | 国内精品小视频 | 91久久精品日日躁夜夜躁国产 | 在线视频1卡二卡三卡 | 免费特级黄色片 | 日韩av影片在线观看 | 久久一区二区免费视频 | 欧美成人按摩 | 91在线中文| 日韩午夜高清 | 国产在线观看免费观看 | 中文字幕韩在线第一页 | 丝袜美腿av | 国产毛片aaa | 日韩中文免费视频 | 欧美日韩免费一区 | 黄网站app在线观看免费视频 | 亚洲国产日本 | 欧美日韩xxxxx | 日韩av伦理片 | 深夜免费福利网站 | 久草电影免费在线观看 | 97高清视频 | 精品国产一区二区三区久久 | 国产成人黄色片 | 美女在线国产 | 亚洲综合在线五月 | 91亚洲精品乱码久久久久久蜜桃 | 亚洲区视频在线 | av一区二区三区在线观看 | 国产99久久久国产精品免费二区 | 久久福利剧场 | 国产精品一区二区三区在线看 | 91九色自拍| 91精品入口| 99这里只有久久精品视频 | 亚洲在线网址 | 天天拍夜夜拍 | 日韩中文字幕视频在线观看 | 国产69久久 | 久久天 | 成人资源网 | 欧美午夜a| www在线观看国产 | 国产一二区精品 | 午夜a区| 在线免费精品视频 | 丝袜精品视频 | 精品国模一区二区三区 | 黄污网站在线观看 | 亚洲高清在线 | 五月天六月丁香 | 亚洲精品乱码久久久久久 | 99婷婷狠狠成为人免费视频 | 亚洲免费视频观看 | 中国一级片在线播放 | 亚洲欧美综合 | 欧美精品免费在线观看 | a级国产乱理伦片在线观看 亚洲3级 | 欧洲精品亚洲精品 | 成人欧美一区二区三区在线观看 | 97精品国产97久久久久久春色 | 蜜臀久久99静品久久久久久 | 日韩中文字幕免费在线观看 | 成人av免费网站 | 国产精品日韩精品 | www.色国产 | 五月天丁香综合 | 99亚洲精品 | 一级免费观看 | 亚洲va欧美 | 久久久久久高清 | 日本精a在线观看 | av福利在线看 | 成人高清av在线 | 狠狠狠干狠狠 | 日韩激情第一页 | 九九精品久久 | 国产香蕉97碰碰碰视频在线观看 | 国产网红在线观看 | 91片网 | 日韩视频在线观看免费 | 91在线文字幕 | 美国三级黄色大片 | 最新的av网站 | 91视频久久久 | 97精品视频在线播放 | 国产亚洲一级高清 | av高清一区二区三区 | 亚洲国产欧美一区二区三区丁香婷 | 91在线区| 天堂v中文 | 久久精品99精品国产香蕉 | 黄色av一区二区三区 | 人人草天天草 | 伊人影院得得 | 久久手机免费观看 | 亚洲国产精品久久久 | 亚洲综合色播 | 三级大片网站 | 99在线免费观看视频 | 日本久久电影 | 欧美在线观看视频一区二区三区 | 中文超碰字幕 | 久久成人18免费网站 | 激情av资源网 | 国产在线播放一区 | 久久艹在线 | 天天综合网在线观看 | 丁香婷五月| 国产亚洲视频系列 | 欧美激情精品久久久 | 日韩免费在线观看 | 最新日韩在线 | 天天射网站 | 午夜丁香视频在线观看 | av中文字幕在线播放 | 在线你懂的视频 | 欧美激情视频免费看 | 成人黄色电影在线播放 | 天天干人人插 | 中文字幕在线观看视频一区二区三区 | 色综合天天综合在线视频 | 九九在线视频 | 国产精品久久久影视 | 国产精品片 | 成年人在线观看视频免费 | 国产精品综合久久 | 9999毛片 | 久久久国产精品电影 | 久久久2o19精品 | 超碰av在线 | 免费日韩三级 | 天天射天天爽 | www.69xx | 国产在线永久 | 久久xxxx| 欧美一二三区在线播放 | 欧美精品在线观看 | 亚洲欧美偷拍另类 | www免费| 在线免费观看视频一区二区三区 | 亚洲国产免费 | 精品欧美一区二区三区久久久 | 精品国产乱码久久久久久1区2匹 | 国产美女搞久久 | 久久久www免费电影网 | 九九天堂 | 免费在线精品视频 | 91色在线观看视频 | 国产v欧美 | 日韩中文三级 | 国产69精品久久99不卡的观看体验 | 成年人免费在线观看网站 | 亚洲国产视频在线 | 一区二区三区福利 | 中文字幕成人在线观看 | 91在线看黄 | 青青河边草免费直播 | 久久97超碰 | 日日夜夜网 | 六月婷色| www国产精品com | 99精品视频免费观看视频 | 久久久一本精品99久久精品 | 免费成人短视频 | 成人动漫一区二区 | 国产中文字幕网 | 又黄又爽又刺激的视频 | 亚洲91中文字幕无线码三区 | 中文字幕视频免费观看 | 欧美国产精品久久久久久免费 | 中文在线a在线 | 久久久久久国产精品免费 | 亚洲va欧美va国产va黑人 | 精品国产一区二 | 天天做日日爱夜夜爽 | 热久久视久久精品18亚洲精品 | 亚洲婷久久 | 久久久久免费精品视频 | 男女视频国产 | 狠狠地日 | 在线免费观看视频a | 五月激情天 | 色天天| 99热在线这里只有精品 | 在线电影av | 亚洲综合激情网 | 亚洲伊人av| 日韩一级网站 | 免费大片av | 国产精品日韩 | 手机成人在线电影 | 国产精品成久久久久 | av线上免费观看 | 五月天精品视频 | 久久久久久免费网 | 成人毛片100免费观看 | 欧美午夜精品久久久久久孕妇 | 高潮久久久 | 97视频在线观看视频免费视频 | 成人黄色小说视频 | 国产精品女人久久久 | 久久久久久久久久久福利 | 免费裸体视频网 | 日韩欧美视频一区二区 | 欧美人操人 | 91在线看视频 | 久久精品一区二区三区视频 | 婷婷夜夜 | 超碰免费成人 | 免费欧美精品 | 亚州人成在线播放 | 国产精品福利午夜在线观看 | 亚洲综合色激情五月 | 精品久久久久久久久久久久久久久久久久 | 欧美另类交人妖 | 在线视频欧美日韩 | 亚洲视屏在线播放 | 在线日韩精品视频 | 久章操 | 一级片免费视频 | 日韩18p| 国产伦精品一区二区三区在线 | 久久久久国产成人精品亚洲午夜 | 九九热.com| 精品视频免费看 | 色婷婷午夜 | 超碰免费av | 亚洲免费国产视频 | 国产高清av免费在线观看 | 中文字幕一区二区三区久久 | 中文字幕国内精品 | 亚州精品成人 | 欧美日韩一区二区三区免费视频 | 毛片网在线播放 | 美腿丝袜一区二区三区 | 亚洲欧洲国产日韩精品 | 91中文字幕在线 | 国产一级大片在线观看 | 久久久国际精品 | 欧美日韩国内在线 | 色爽网站 | 天天做日日做天天爽视频免费 | 成人亚洲网 | 中文字幕资源在线观看 | 色噜噜狠狠色综合中国 | 五月天久久激情 | www在线观看视频 | 日韩一三区| 麻豆视频在线观看免费 | 亚洲最大成人免费网站 | 久久国产精品久久精品国产演员表 | 久久精品一二三区 | 中文字幕在线观看日本 | 精品播放 | 91精品天码美女少妇 | 国产一级在线播放 | 热久久这里只有精品 | 99国产精品一区二区 | 成人亚洲精品久久久久 | 精品日本视频 | 成人全视频免费观看在线看 | 一本一道久久a久久综合蜜桃 | 91av播放 | 日韩精品欧美专区 | 久久久免费视频播放 | 一区二区三区在线不卡 | 国产精品丝袜在线 | 免费观看www7722午夜电影 | 国产精品视频你懂的 | 日韩免费在线视频观看 | 最近中文字幕第一页 | 亚洲成人欧美 | 九九久久久久久久久激情 | 9999精品| 波多野结衣网址 | 免费看一级黄色大全 | 欧美精品中文字幕亚洲专区 | 天天色视频 | 婷婷在线网站 | 国产成人免费 | 成人小视频免费在线观看 | 欧美日韩免费网站 | h网站免费在线观看 | 免费人成网 | 自拍超碰在线 | 欧美精品一区二区性色 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 亚洲伦理中文字幕 | 色就色,综合激情 | 九九热99视频 | 国产精品视频永久免费播放 | 欧美日韩国产精品爽爽 | 在线观看免费av片 | 日日夜夜骑 | 国产精品18毛片一区二区 | 97在线免费观看视频 | 一区二区成人国产精品 | 97小视频 | 国产精品九九热 | 久久九九国产视频 | 久久99视频免费观看 | 色播五月激情综合网 | 国产色拍拍拍拍在线精品 | 天天色天天综合 | 国产精品一区二区三区免费看 | 久久中文字幕在线视频 | 最新国产一区二区三区 | 中文视频一区二区 | 国产精品久久久久久久久久三级 | 国产 日韩 欧美 中文 在线播放 | 色欧美成人精品a∨在线观看 | 亚洲成av人电影 | 丁香九月婷婷 | 久久激情五月婷婷 | 久久视频这里有精品 | 久久久免费看视频 | 欧美日韩高清一区二区三区 | 国产一区视频导航 | 免费黄色av片 | 激情欧美一区二区免费视频 | 91人人在线 | 白丝av在线 | 中文字幕av免费在线观看 | 高清在线观看av | 久草在线免费看视频 | 日韩福利在线观看 | 国产精品12 | 一本色道久久综合亚洲二区三区 | 欧美在线你懂的 | 天天摸天天干天天操天天射 | 色综合久久久久综合体桃花网 | av电影 一区二区 | 日韩一区二区三区高清免费看看 | 国产精品第十页 | 国产精品网站 | 久久久久国产精品午夜一区 | 激情丁香久久 | 97国产在线播放 | 五月开心婷婷 | 99精品影视 | 国产一级二级三级在线观看 | 国产精品久久久久久久久久久久午夜片 | 日韩三区在线观看 | 亚洲精品国产综合久久 | 久章操| 在线欧美最极品的av | 欧美亚洲一区二区在线 | 激情综合站 | 丁香在线视频 | 中文字幕电影高清在线观看 | av在线com| 日韩性xxxx | 亚洲精品ww | 成人免费视频网 | 久久精品影视 | 日本久久成人中文字幕电影 | 激情综合网五月 | 三上悠亚一区二区在线观看 | 久久精品一区二区三区国产主播 | 国产人免费人成免费视频 | 成人在线视频免费看 | 五月在线视频 | 69国产盗摄一区二区三区五区 | 国产精品美女久久久久久2018 | 精品国产综合区久久久久久 | 久久影院午夜论 | 午夜久操 | 九九免费精品视频 | 国产亚洲一区二区在线观看 | 国产精品永久在线观看 | 看全黄大色黄大片 | 国产 一区二区三区 在线 | 国产中文 | 久久午夜羞羞影院 | 日日射天天射 | 国产小视频免费在线网址 | 美女久久99 | 久久女同性恋中文字幕 | 天天干婷婷 | 欧洲精品亚洲精品 | 在线播放 日韩专区 | 国产探花视频在线播放 | 午夜国产一区二区三区四区 | av观看免费在线 | ww视频在线观看 | 99久久精品日本一区二区免费 | 中文字幕中文字幕在线中文字幕三区 | 欧美日韩精品免费观看视频 | 亚洲成人麻豆 | 国产精品久久久久久久久久久不卡 | 午夜少妇一区二区三区 | 亚洲影视资源 | 亚洲麻豆精品 | 六月丁香久久 | 国产乱老熟视频网88av | 精品一区电影 | 2021国产在线 | 美女黄濒 | 麻豆视频一区二区 | 国产一级视频在线免费观看 | 插婷婷 | 国产生活一级片 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 99久久精品免费看国产免费软件 | 日韩免费播放 | 天天射天天舔天天干 | 日本黄色免费看 | 99热官网 | 91成人久久 | 91观看视频 | 三级黄色免费 | 天天操夜 | 免费在线精品视频 | 女人18毛片a级毛片一区二区 | 国产精品专区在线观看 | 日韩av图片 | 97视频总站 | 在线观看免费黄色 | www.操.com| 在线免费av观看 | 久久在线免费观看视频 | 婷婷综合影院 | 国产亚洲观看 | 天天天干天天天操 | av黄色在线播放 | 超碰在线人 | 精品国产一区在线观看 | 麻豆传媒视频观看 | 在线观看免费视频你懂的 | 青青河边草免费 | 涩涩成人在线 | 国产精品电影在线 | 久久精精品视频 | 四川妇女搡bbbb搡bbbb搡 | 久久国产精品色av免费看 | 成人在线黄色 | 亚洲欧美在线视频免费 | 中文字幕在线观看三区 | 91亚洲精品久久久蜜桃网站 | 国产精品久久久久久久久大全 | 日本成人黄色片 | 精品福利视频在线 | 久久久黄视频 | 亚洲免费在线观看视频 | 色美女在线 | 婷婷中文字幕 | 日女人免费视频 | 尤物97国产精品久久精品国产 | 日韩91av | 国产视频精品久久 | 久久av免费 | 国产精品女同一区二区三区久久夜 | 日韩精品一区二区在线观看 | 成人黄色大片在线观看 | 中文字幕av在线不卡 | 久久国产精品视频观看 | 97视频成人| 国产精品一区二区免费 | 亚洲精品永久免费视频 | 久久精品香蕉视频 | 久草在线视频首页 | 国产美腿白丝袜足在线av | 99爱精品视频 | 亚洲一级国产 | 国产精品99蜜臀久久不卡二区 | 久久久久久久久久久电影 | 天天激情在线 | 国内视频在线 | 天天插视频 | 99在线视频播放 | 国产麻豆剧传媒免费观看 | 国产91大片 | 亚洲精品在线一区二区 | 国产又粗又猛又黄又爽的视频 | 日韩欧美视频免费看 | 久久午夜精品影院一区 | 国内精品中文字幕 | 美女视频永久黄网站免费观看国产 | 国产精品免费视频网站 | 欧美天天综合网 | 欧美日韩久久久 | 欧美黄色特级片 | 黄色片软件网站 | 国产精品中文在线 | 久久激情小视频 | 成人久久久精品国产乱码一区二区 | 99久久精品国产网站 | 精品国产乱码久久久久久1区2匹 | 美女视频网 | 日韩不卡高清 | 日韩在线免费视频 | 成人中文字幕+乱码+中文字幕 | 日韩在线视频免费看 | 91.精品高清在线观看 | av黄色成人| 国产精品久久久久久久久久了 | 欧美日本啪啪无遮挡网站 | 婷婷色综合色 | 成人免费观看大片 | 天天色天天操天天爽 | 91精品国产九九九久久久亚洲 | 成人国产精品久久久久久亚洲 | 日韩精品一区二区三区外面 | 欧美一区二区免费在线观看 | 看片一区二区三区 | 亚洲一级片在线看 | 国产精品亚洲精品 | 五月婷婷六月丁香激情 | 一区二区三区www | 一级黄色网址 | 99国内精品久久久久久久 | 久久久久久久久免费视频 | 亚洲欧美成人在线 | 日韩欧美综合视频 | 色婷婷丁香 | 亚洲一本视频 | 在线观看的a站 | 超碰资源在线 | 99久久国产免费免费 | 中文av日韩 | 免费黄色激情视频 | 亚洲男男gⅴgay双龙 | 国产精在线 | 美女久久久久久久久久久 | 国产免费久久av | 国产综合小视频 | 中文字幕二区在线观看 | 香蕉久久国产 | 国产 日韩 欧美 中文 在线播放 | 日韩精品亚洲专区在线观看 | 不卡视频在线 | 国产成人久久久久 | 国产精品国产精品 | 日韩欧美精品在线视频 | 国产又粗又猛又色又黄网站 | 国产成人在线网站 | 色天天| 日韩av高清 | 久久这里只有精品9 | 91成人午夜| 欧美影片 | 在线观看资源 | 久久一区二区三区日韩 | 国产一区免费 | 色偷偷88888欧美精品久久久 | 99视频网站 | 国产 欧美 在线 | 91漂亮少妇露脸在线播放 | 亚洲精选视频在线 | 国产精品网红直播 | 日韩高清免费在线 | 国产一级片免费观看 | 黄色毛片电影 | 在线免费观看国产视频 | 色综合久久中文综合久久牛 | 国产精选视频 | 国产精品porn | 一区二区在线电影 | www.天天干.com| 激情久久五月 | 黄色美女免费网站 | 免费热情视频 | 亚洲区另类春色综合小说校园片 | 久久久久婷 | 欧美资源 | 婷婷丁香狠狠爱 | 国产亚洲精品成人av久久ww | 国产精品色 | 欧美日韩一区二区三区在线免费观看 | 伊人五月天综合 | 亚洲午夜av电影 | 精品国产一区二区久久 | 日韩在线中文字幕 | 国产中文字幕免费 | 天天插天天干天天操 | 久久只有精品 | 在线视频一区二区 | 久久成人黄色 | 五月婷婷丁香激情 | 亚洲资源一区 | 欧美极度另类性三渗透 | 欧美精品首页 | 国产一卡久久电影永久 | 热久久精品在线 | 成人性生交视频 | 国产在线欧美 | 欧美日韩午夜爽爽 | 国产成人在线免费观看 | 精品av网站| 黄色av网站在线免费观看 | 手机看片国产日韩 | 婷婷综合在线 | 日日日天天天 | 国产无限资源在线观看 | 日韩精品中文字幕久久臀 | 国产福利在线不卡 | 久久久久久高潮国产精品视 | 国产精品午夜在线观看 | 国产精品美女在线观看 | 久久国产精品99国产 | 午夜视频免费播放 | 在线国产专区 | 深爱开心激情网 | 超碰在线国产 | 亚洲一区视频在线播放 | 国产高清成人av | 91激情 | av高清免费在线 | 日韩免费网址 | 欧美精品久久久久久久亚洲调教 | 国产成人61精品免费看片 | 伊人婷婷在线 | 亚洲最大在线视频 | 激情五月婷婷综合 | 久久精品成人热国产成 | 在线观看日韩中文字幕 | 免费久久片 | 亚洲高清在线观看视频 | 国产精品乱码一区二三区 | 色中色资源站 | 欧美视频不卡 | 久香蕉| 狠狠色狠狠色综合日日小说 | 超碰免费在线公开 | www色网站 | 中文字幕在线免费看线人 | 欧美人zozo| 婷婷综合 | 国产福利不卡视频 | 久久艹人人 | 国产999精品久久久影片官网 | 免费高清影视 | 国产精品日韩欧美一区二区 | 成人午夜精品 | 久草线 | 国产精品一区二区免费视频 | 色综合久久久久综合 | 亚洲国产一区二区精品专区 | 香蕉影视| 丁香花中文在线免费观看 | 亚洲国产中文在线 | 中国精品少妇 | 超碰在线最新网址 | 免费观看成人网 | 亚洲国产婷婷 | 国产品久精国精产拍 | 亚洲免费高清视频 | 亚洲理论视频 | 国产黄色片免费观看 | 国产精品久久久久久69 | 国产精品大片在线观看 | 亚洲精品美女在线观看 | 午夜久久久久久久久久影院 | 日韩视频一区二区在线观看 | 美女视频黄,久久 | av高清免费 | 精品视频区 | 久久久久国产精品免费免费搜索 | 天天干天天摸天天操 | 久久国产精品久久久久 | 久久久亚洲电影 | 日韩精品高清视频 | 国产精品九九九九九九 | 欧美激情第28页 | 9在线观看免费高清完整版 玖玖爱免费视频 | 日韩精品五月天 | www.黄色片网站 | 国产精品成人久久 | 在线观看一区二区视频 | 九九九热精品免费视频观看 | 欧美激情精品久久久久 | 久久久久久片 | 国产黄色精品在线 | 亚洲观看黄色网 | 国产99久久久欧美黑人 | 久久免费电影网 | 天天操狠狠操网站 | 久草在线国产 | 日韩黄色免费看 | 天天曰天天爽 | 91热视频 | 69精品视频| 日韩欧美一区二区不卡 | 中文字幕无吗 | 久草在线最新免费 | 国色天香第二季 | 三级黄色大片在线观看 | 日韩综合精品 | www.亚洲视频.com| 天天色天天综合 | 伊人黄| 国产福利小视频在线 | 91av在线播放视频 | 热久久99这里有精品 | 精品久久一 | 五月天综合网站 | 手机色站| 99国产精品视频免费观看一公开 | 婷婷六月天在线 | 国产不卡在线看 | 亚洲天堂网视频 | 久久久久久久18 | 国产精品s色 | 国产二区精品 | 91免费在线播放 | 成年人免费看片 | 国产v在线观看 | www.干| 九九热在线观看 | 久久久久综合精品福利啪啪 | 日韩啪啪小视频 | 免费三及片 | 国产免费视频在线 | 免费在线成人av电影 | 亚洲成人精品国产 | 欧美一级免费 | 久久99精品国产91久久来源 | 少妇性aaaaaaaaa视频 | 波多野结衣久久精品 | 国产高清视频网 | 18国产精品白浆在线观看免费 | 国产在线不卡精品 | 久久av免费观看 | 精品96久久久久久中文字幕无 | 一级久久精品 | 国产偷国产偷亚洲清高 | 最近免费在线观看 | 久久国内精品 | 91精选| 九九免费在线观看视频 | 国产中文字幕一区 | 中文字幕在线视频一区 | 高清不卡一区二区三区 | 国产经典av | 99热.com| 日日操天天操夜夜操 | 热久久最新地址 | 日韩一区二区三区不卡 | 亚洲精品久久久久久中文传媒 | 国内精品视频一区二区三区八戒 | a√资源在线 | 中文字幕一区av | 人人干人人超 | 热久久在线视频 | 亚洲va在线va天堂va偷拍 | 免费看的黄色小视频 | 欧美极品xxxxx | 在线视频 一区二区 | 91超级碰碰 | 国产精品视频全国免费观看 | 欧美综合色在线图区 | 日韩av成人| 一本一本久久a久久精品综合 | 国产97视频在线 | 97在线精品 | 黄av在线 | www.在线观看视频 | 久艹在线观看视频 | 国产97碰免费视频 | 精品国产乱码久久久久久浪潮 | 午夜在线观看影院 | 一级大片在线观看 | 综合网伊人 | 日本激情视频中文字幕 | 大胆欧美gogo免费视频一二区 | 伊人av综合| 99精品国产在热久久下载 | 国产色视频网站 | 中文在线天堂资源 | 日本中文字幕在线看 | 国产精品永久久久久久久久久 | 精品日韩在线 | 婷婷色在线观看 | 久久电影国产免费久久电影 | 久久免费视频99 | 婷婷网站天天婷婷网站 | 免费一级片久久 | 人人澡人人模 | 色婷婷av一区 | 国产成人精品免费在线观看 | 免费一级片在线 | 精品综合久久 | 日本精品一区二区在线观看 | 91精品一区二区三区久久久久久 | 亚在线播放中文视频 | 国产精品99久久久久 | 91在线最新| 最近2019年日本中文免费字幕 | 国产精彩视频一区 | 久久精品网站视频 | 天天爽夜夜爽精品视频婷婷 | 国产a级免费 | 欧美日韩超碰 | 美腿丝袜一区二区三区 | 视频一区亚洲 | 欧美成人999 | 992tv人人草 黄色国产区 | 激情综合网天天干 | 日韩欧美一区二区三区视频 | 欧美性粗大hdvideo | 天天爱天天操天天射 | 99国产免费网址 | 久久激情片 | 美女免费视频观看网站 | 黄色一级在线视频 | 国产一级视频在线观看 | av综合av | 国产美女视频免费 | 欧美一区二区视频97 | 香蕉视频在线视频 | 一区二区视频网站 | 亚洲成人av片 | 国产成人在线免费观看 | www.天天干 | 欧美日韩国产一区二 | 国产精品一区欧美 | 在线观看成人小视频 | 中文国产在线观看 | 免费久久99精品国产婷婷六月 | 免费日韩av电影 | 欧美日韩免费一区二区 | 97超碰人人澡 | 五月婷婷丁香 | 人人精品| 香蕉视频在线免费看 | 99精品免费久久久久久久久 | 亚洲精品玖玖玖av在线看 | 久久综合久久综合久久综合 | 一级黄色片在线观看 | 操碰av| 在线免费黄色片 | 午夜影院日本 | 久久99精品久久久久久秒播蜜臀 | 日韩激情久久 | 精品一区二区视频 | 国产精品成久久久久 | 国产精品成人久久久久久久 | 999毛片| 中文国产在线观看 | 麻豆一区二区 | av中文字幕在线电影 | 久久中文欧美 | 日韩精品一区二区在线观看视频 | 国产日产亚洲精华av | 九月婷婷人人澡人人添人人爽 | 成人性生交大片免费观看网站 | 久久久久久网站 | 亚洲一区二区三区四区精品 | 最近中文字幕高清字幕免费mv | 久久激情视频网 | 国产精品久久久久久久久久久久午夜 | 国产精品福利久久久 | 一区二区三区在线免费 | 久草在线最新视频 | 午夜成人影视 | 国产亚洲欧美一区 | 超级碰99 | 一区二区三区在线观看免费 | 久久国产亚洲 | 中文字幕亚洲字幕 | 国产精品久久久久9999吃药 | 九九免费精品 | 日本中文字幕在线免费观看 | 友田真希x88av| 国产日产亚洲精华av | 精品国产电影 | 久久久久久国产精品免费 | 毛片在线网 | 丁香六月婷 | 在线免费色视频 | 9色在线视频 | 日韩黄色免费看 | 在线国产视频 | 欧美日韩中文字幕在线视频 | 一级黄色大片 | 一区二区三区在线免费播放 | 欧美精品免费一区二区 | 亚洲精品乱码久久久久v最新版 | 人人爽人人爽人人片 | 青草视频在线 | 激情婷婷久久 | 久久任你操 | 亚洲国产精品成人av | 久久深夜福利免费观看 | 中文字幕久久网 | 99精品在线免费视频 | 日韩在线观看视频免费 | 91九色蝌蚪国产 | 在线免费性生活片 | 三级动态视频在线观看 | 欧美激情操 | 2021国产精品视频 | 久久久久久久亚洲精品 | 草莓视频在线观看免费观看 | 99久久久国产精品 | 国产一区二区在线观看免费 | 九九综合久久 | 成片人卡1卡2卡3手机免费看 | 看国产黄色大片 | 亚洲精品videossex少妇 | 国产精品久久久久久久久久久免费看 | 国产第一福利网 | 一区二区三区在线不卡 | 国产一级视频在线 | 久青草视频在线观看 | 国产精品99久久久久久久久久久久 | 毛片在线播放网址 | 波多野结衣视频一区二区 | 特级黄录像视频 | 黄色小网站在线观看 | 久久影院亚洲 | 五月天婷亚洲天综合网精品偷 | www.五月天色 | 超碰com| 亚州视频在线 | 国产精品岛国久久久久久久久红粉 | 97久久精品午夜一区二区 | 日韩电影在线观看一区 | 在线黄色免费 | 999电影免费在线观看 | 日韩激情视频在线观看 | 成人免费看黄 | 亚洲一区网 | 一二三精品视频 | www视频在线免费观看 | 日韩欧美电影网 | 狠狠黄| 人人爽人人爽人人爽学生一级 | 日日干,天天干 | 黄色三级免费网址 | 免费中午字幕无吗 | 日本夜夜草视频网站 | 91福利在线观看 | 久久精品欧美一 | 久久久久国产成人精品亚洲午夜 | 91超在线 | 91精品一区二区三区蜜臀 | 精品一二区 | 91av视频在线观看免费 | 狠狠操影视 | 精品国产免费人成在线观看 | www.久久免费 | 888av| 国产精品久久三 | v片在线看 | 亚洲黄色一级视频 | 久久不卡国产精品一区二区 | 又黄又爽又无遮挡的视频 | www.国产精品 | 在线观看免费高清视频大全追剧 | 开心丁香婷婷深爱五月 | 91插插影库 | 国产区精品区 | 亚洲精品国产成人 | 97在线观视频免费观看 | 中文字幕观看视频 | 三级黄色欧美 | 99精品国产免费久久 | 亚洲精品视频二区 | 狠狠色免费 | 91精品国产自产在线观看永久 | 国产精品不卡在线 | 国产精品 欧美 日韩 | 免费网址在线播放 | 久久网址| 久久久69 | 五月在线 | 成人毛片在线观看视频 | 精品毛片久久久久久 | 欧美中文字幕久久 | 久久电影日韩 |