diff options
author | Fedor Kudasov <kudasov@google.com> | 2019-07-04 12:54:28 +0100 |
---|---|---|
committer | Fedor Kudasov <kudasov@google.com> | 2019-07-25 07:15:36 +0000 |
commit | a8871166a39528ef1cd90632c5c1f5af2c3c7afa (patch) | |
tree | 5153d449522b86fb758f702f8a533f7676a36e3d /libs/hostgraphics | |
parent | 26f2c379d0c5e6f6f37419ed06d57f252b9501e7 (diff) |
Enable surface for host
Bug: 117921091
Test: all tests should pass
Change-Id: I85ca106bb9d7bec36543abf6174ea6958207e56b
Diffstat (limited to 'libs/hostgraphics')
-rw-r--r-- | libs/hostgraphics/Android.bp | 24 | ||||
-rw-r--r-- | libs/hostgraphics/gui/IGraphicBufferProducer.h | 36 | ||||
-rw-r--r-- | libs/hostgraphics/gui/Surface.h | 66 |
3 files changed, 126 insertions, 0 deletions
diff --git a/libs/hostgraphics/Android.bp b/libs/hostgraphics/Android.bp new file mode 100644 index 000000000000..aedb7522ab08 --- /dev/null +++ b/libs/hostgraphics/Android.bp @@ -0,0 +1,24 @@ +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 diff --git a/libs/hostgraphics/gui/IGraphicBufferProducer.h b/libs/hostgraphics/gui/IGraphicBufferProducer.h new file mode 100644 index 000000000000..00422136ff76 --- /dev/null +++ b/libs/hostgraphics/gui/IGraphicBufferProducer.h @@ -0,0 +1,36 @@ +/* + * 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 diff --git a/libs/hostgraphics/gui/Surface.h b/libs/hostgraphics/gui/Surface.h new file mode 100644 index 000000000000..de1ba00211d3 --- /dev/null +++ b/libs/hostgraphics/gui/Surface.h @@ -0,0 +1,66 @@ +/* + * 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 |