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

Commit a8871166 authored by Fedor Kudasov's avatar Fedor Kudasov
Browse files

Enable surface for host

Bug: 117921091
Test: all tests should pass
Change-Id: I85ca106bb9d7bec36543abf6174ea6958207e56b
parent 26f2c379
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -344,6 +344,8 @@ cc_library_shared {
            ],
            include_dirs: [
                "external/vulkan-headers/include",
                "frameworks/native/libs/nativebase/include",
                "frameworks/native/libs/nativewindow/include"
            ],
            shared_libs: [
                "libicui18n",
@@ -353,6 +355,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