Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f214d58 authored by Fedor Kudasov's avatar Fedor Kudasov Committed by Android (Google) Code Review
Browse files

Merge "Enable surface for host"

parents 676ea210 a8871166
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -288,6 +288,8 @@ cc_library_shared {
            ],
            include_dirs: [
                "external/vulkan-headers/include",
                "frameworks/native/libs/nativebase/include",
                "frameworks/native/libs/nativewindow/include"
            ],
            shared_libs: [
                "libicui18n",
@@ -297,6 +299,7 @@ cc_library_shared {
                "libandroidfw",
                "libcompiler_rt",
                "libutils",
                "libhostgraphics",
            ],
        },
        linux_glibc: {
+24 −0
Original line number Diff line number Diff line
cc_library_host_static {
    name: "libhostgraphics",

    srcs: [
        ":libui_host_common",
    ],

    include_dirs: [
        // Here we override all the headers automatically included with frameworks/native/include.
        // When frameworks/native/include will be removed from the list of automatic includes.
        // We will have to copy necessary headers with a pre-build step (generated headers).
        ".",
        "frameworks/native/libs/nativebase/include",
        "frameworks/native/libs/nativewindow/include",
        "frameworks/native/libs/arect/include",
    ],
    export_include_dirs: ["."],

    target: {
        windows: {
            enabled: true,
        }
    },
}
 No newline at end of file
+36 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef ANDROID_GUI_IGRAPHICBUFFERPRODUCER_H
#define ANDROID_GUI_IGRAPHICBUFFERPRODUCER_H

#include <utils/RefBase.h>

namespace android {

class IGraphicBufferProducer : virtual public RefBase {
public:
    enum class DisconnectMode {
        // Disconnect only the specified API.
        Api,
        // Disconnect any API originally connected from the process calling disconnect.
        AllLocal
    };
};

} // namespace android

#endif // ANDROID_GUI_IGRAPHICBUFFERPRODUCER_H
+66 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef ANDROID_GUI_SURFACE_H
#define ANDROID_GUI_SURFACE_H

#include <gui/IGraphicBufferProducer.h>
#include <ui/ANativeObjectBase.h>
#include <utils/RefBase.h>
#include <system/window.h>

namespace android {

class Surface : public ANativeObjectBase<ANativeWindow, Surface, RefBase> {
public:
    explicit Surface(const sp<IGraphicBufferProducer>& bufferProducer,
                     bool controlledByApp = false) {
        ANativeWindow::perform = hook_perform;
    }
    static bool isValid(const sp<Surface>& surface) { return surface != nullptr; }
    void allocateBuffers() {}

    uint64_t getNextFrameNumber() const { return 0; }

    int setScalingMode(int mode) { return 0; }

    virtual int disconnect(int api,
                           IGraphicBufferProducer::DisconnectMode mode =
                                   IGraphicBufferProducer::DisconnectMode::Api) {
        return 0;
    }

    virtual int lock(ANativeWindow_Buffer* outBuffer, ARect* inOutDirtyBounds) {
        // TODO: implement this
        return 0;
    }
    virtual int unlockAndPost() { return 0; }
    virtual int query(int what, int* value) const { return 0; }

protected:
    virtual ~Surface() {}

    static int hook_perform(ANativeWindow* window, int operation, ...) { return 0; }

private:
    // can't be copied
    Surface& operator=(const Surface& rhs);
    Surface(const Surface& rhs);
};

} // namespace android

#endif  // ANDROID_GUI_SURFACE_H