Loading aidl/gui/android/view/Surface.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -17,4 +17,4 @@ package android.view; parcelable Surface cpp_header "gui/Surface.h"; parcelable Surface cpp_header "gui/view/Surface.h"; include/gui/Surface.h +1 −40 Original line number Diff line number Diff line Loading @@ -17,8 +17,6 @@ #ifndef ANDROID_GUI_SURFACE_H #define ANDROID_GUI_SURFACE_H #include <binder/Parcelable.h> #include <gui/IGraphicBufferProducer.h> #include <gui/BufferQueueDefs.h> Loading Loading @@ -410,43 +408,6 @@ protected: std::unique_ptr<ProducerFrameEventHistory> mFrameEventHistory; }; namespace view { /** * A simple holder for an IGraphicBufferProducer, to match the managed-side * android.view.Surface parcelable behavior. * * This implements android/view/Surface.aidl * * TODO: Convert IGraphicBufferProducer into AIDL so that it can be directly * used in managed Binder calls. */ class Surface : public Parcelable { public: String16 name; sp<IGraphicBufferProducer> graphicBufferProducer; virtual status_t writeToParcel(Parcel* parcel) const override; virtual status_t readFromParcel(const Parcel* parcel) override; // nameAlreadyWritten set to true by Surface.java, because it splits // Parceling itself between managed and native code, so it only wants a part // of the full parceling to happen on its native side. status_t writeToParcel(Parcel* parcel, bool nameAlreadyWritten) const; // nameAlreadyRead set to true by Surface.java, because it splits // Parceling itself between managed and native code, so it only wants a part // of the full parceling to happen on its native side. status_t readFromParcel(const Parcel* parcel, bool nameAlreadyRead); private: static String16 readMaybeEmptyString16(const Parcel* parcel); }; } // namespace view }; // namespace android } // namespace android #endif // ANDROID_GUI_SURFACE_H include/gui/view/Surface.h 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * Copyright (C) 2010 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_VIEW_SURFACE_H #define ANDROID_GUI_VIEW_SURFACE_H #include <utils/Errors.h> #include <utils/StrongPointer.h> #include <utils/String16.h> #include <binder/Parcelable.h> namespace android { class IGraphicBufferProducer; namespace view { /** * A simple holder for an IGraphicBufferProducer, to match the managed-side * android.view.Surface parcelable behavior. * * This implements android/view/Surface.aidl * * TODO: Convert IGraphicBufferProducer into AIDL so that it can be directly * used in managed Binder calls. */ class Surface : public Parcelable { public: String16 name; sp<IGraphicBufferProducer> graphicBufferProducer; virtual status_t writeToParcel(Parcel* parcel) const override; virtual status_t readFromParcel(const Parcel* parcel) override; // nameAlreadyWritten set to true by Surface.java, because it splits // Parceling itself between managed and native code, so it only wants a part // of the full parceling to happen on its native side. status_t writeToParcel(Parcel* parcel, bool nameAlreadyWritten) const; // nameAlreadyRead set to true by Surface.java, because it splits // Parceling itself between managed and native code, so it only wants a part // of the full parceling to happen on its native side. status_t readFromParcel(const Parcel* parcel, bool nameAlreadyRead); private: static String16 readMaybeEmptyString16(const Parcel* parcel); }; } // namespace view } // namespace android #endif // ANDROID_GUI_VIEW_SURFACE_H libs/gui/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,7 @@ cc_library_shared { "SurfaceControl.cpp", "SurfaceComposerClient.cpp", "SyncFeatures.cpp", "view/Surface.cpp", ], shared_libs: [ Loading libs/gui/Surface.cpp +2 −73 Original line number Diff line number Diff line Loading @@ -18,9 +18,9 @@ #define ATRACE_TAG ATRACE_TAG_GRAPHICS //#define LOG_NDEBUG 0 #include <android/native_window.h> #include <gui/Surface.h> #include <binder/Parcel.h> #include <android/native_window.h> #include <utils/Log.h> #include <utils/Trace.h> Loading @@ -32,7 +32,6 @@ #include <gui/BufferItem.h> #include <gui/IProducerListener.h> #include <gui/Surface.h> #include <gui/ISurfaceComposer.h> #include <private/gui/ComposerService.h> Loading Loading @@ -1539,74 +1538,4 @@ status_t Surface::getUniqueId(uint64_t* outId) const { return mGraphicBufferProducer->getUniqueId(outId); } namespace view { status_t Surface::writeToParcel(Parcel* parcel) const { return writeToParcel(parcel, false); } status_t Surface::writeToParcel(Parcel* parcel, bool nameAlreadyWritten) const { if (parcel == nullptr) return BAD_VALUE; status_t res = OK; if (!nameAlreadyWritten) { res = parcel->writeString16(name); if (res != OK) return res; /* isSingleBuffered defaults to no */ res = parcel->writeInt32(0); if (res != OK) return res; } res = parcel->writeStrongBinder( IGraphicBufferProducer::asBinder(graphicBufferProducer)); return res; } status_t Surface::readFromParcel(const Parcel* parcel) { return readFromParcel(parcel, false); } status_t Surface::readFromParcel(const Parcel* parcel, bool nameAlreadyRead) { if (parcel == nullptr) return BAD_VALUE; status_t res = OK; if (!nameAlreadyRead) { name = readMaybeEmptyString16(parcel); // Discard this for now int isSingleBuffered; res = parcel->readInt32(&isSingleBuffered); if (res != OK) { ALOGE("Can't read isSingleBuffered"); return res; } } sp<IBinder> binder; res = parcel->readNullableStrongBinder(&binder); if (res != OK) { ALOGE("%s: Can't read strong binder", __FUNCTION__); return res; } graphicBufferProducer = interface_cast<IGraphicBufferProducer>(binder); return OK; } String16 Surface::readMaybeEmptyString16(const Parcel* parcel) { size_t len; const char16_t* str = parcel->readString16Inplace(&len); if (str != nullptr) { return String16(str, len); } else { return String16(); } } } // namespace view }; // namespace android Loading
aidl/gui/android/view/Surface.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -17,4 +17,4 @@ package android.view; parcelable Surface cpp_header "gui/Surface.h"; parcelable Surface cpp_header "gui/view/Surface.h";
include/gui/Surface.h +1 −40 Original line number Diff line number Diff line Loading @@ -17,8 +17,6 @@ #ifndef ANDROID_GUI_SURFACE_H #define ANDROID_GUI_SURFACE_H #include <binder/Parcelable.h> #include <gui/IGraphicBufferProducer.h> #include <gui/BufferQueueDefs.h> Loading Loading @@ -410,43 +408,6 @@ protected: std::unique_ptr<ProducerFrameEventHistory> mFrameEventHistory; }; namespace view { /** * A simple holder for an IGraphicBufferProducer, to match the managed-side * android.view.Surface parcelable behavior. * * This implements android/view/Surface.aidl * * TODO: Convert IGraphicBufferProducer into AIDL so that it can be directly * used in managed Binder calls. */ class Surface : public Parcelable { public: String16 name; sp<IGraphicBufferProducer> graphicBufferProducer; virtual status_t writeToParcel(Parcel* parcel) const override; virtual status_t readFromParcel(const Parcel* parcel) override; // nameAlreadyWritten set to true by Surface.java, because it splits // Parceling itself between managed and native code, so it only wants a part // of the full parceling to happen on its native side. status_t writeToParcel(Parcel* parcel, bool nameAlreadyWritten) const; // nameAlreadyRead set to true by Surface.java, because it splits // Parceling itself between managed and native code, so it only wants a part // of the full parceling to happen on its native side. status_t readFromParcel(const Parcel* parcel, bool nameAlreadyRead); private: static String16 readMaybeEmptyString16(const Parcel* parcel); }; } // namespace view }; // namespace android } // namespace android #endif // ANDROID_GUI_SURFACE_H
include/gui/view/Surface.h 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * Copyright (C) 2010 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_VIEW_SURFACE_H #define ANDROID_GUI_VIEW_SURFACE_H #include <utils/Errors.h> #include <utils/StrongPointer.h> #include <utils/String16.h> #include <binder/Parcelable.h> namespace android { class IGraphicBufferProducer; namespace view { /** * A simple holder for an IGraphicBufferProducer, to match the managed-side * android.view.Surface parcelable behavior. * * This implements android/view/Surface.aidl * * TODO: Convert IGraphicBufferProducer into AIDL so that it can be directly * used in managed Binder calls. */ class Surface : public Parcelable { public: String16 name; sp<IGraphicBufferProducer> graphicBufferProducer; virtual status_t writeToParcel(Parcel* parcel) const override; virtual status_t readFromParcel(const Parcel* parcel) override; // nameAlreadyWritten set to true by Surface.java, because it splits // Parceling itself between managed and native code, so it only wants a part // of the full parceling to happen on its native side. status_t writeToParcel(Parcel* parcel, bool nameAlreadyWritten) const; // nameAlreadyRead set to true by Surface.java, because it splits // Parceling itself between managed and native code, so it only wants a part // of the full parceling to happen on its native side. status_t readFromParcel(const Parcel* parcel, bool nameAlreadyRead); private: static String16 readMaybeEmptyString16(const Parcel* parcel); }; } // namespace view } // namespace android #endif // ANDROID_GUI_VIEW_SURFACE_H
libs/gui/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,7 @@ cc_library_shared { "SurfaceControl.cpp", "SurfaceComposerClient.cpp", "SyncFeatures.cpp", "view/Surface.cpp", ], shared_libs: [ Loading
libs/gui/Surface.cpp +2 −73 Original line number Diff line number Diff line Loading @@ -18,9 +18,9 @@ #define ATRACE_TAG ATRACE_TAG_GRAPHICS //#define LOG_NDEBUG 0 #include <android/native_window.h> #include <gui/Surface.h> #include <binder/Parcel.h> #include <android/native_window.h> #include <utils/Log.h> #include <utils/Trace.h> Loading @@ -32,7 +32,6 @@ #include <gui/BufferItem.h> #include <gui/IProducerListener.h> #include <gui/Surface.h> #include <gui/ISurfaceComposer.h> #include <private/gui/ComposerService.h> Loading Loading @@ -1539,74 +1538,4 @@ status_t Surface::getUniqueId(uint64_t* outId) const { return mGraphicBufferProducer->getUniqueId(outId); } namespace view { status_t Surface::writeToParcel(Parcel* parcel) const { return writeToParcel(parcel, false); } status_t Surface::writeToParcel(Parcel* parcel, bool nameAlreadyWritten) const { if (parcel == nullptr) return BAD_VALUE; status_t res = OK; if (!nameAlreadyWritten) { res = parcel->writeString16(name); if (res != OK) return res; /* isSingleBuffered defaults to no */ res = parcel->writeInt32(0); if (res != OK) return res; } res = parcel->writeStrongBinder( IGraphicBufferProducer::asBinder(graphicBufferProducer)); return res; } status_t Surface::readFromParcel(const Parcel* parcel) { return readFromParcel(parcel, false); } status_t Surface::readFromParcel(const Parcel* parcel, bool nameAlreadyRead) { if (parcel == nullptr) return BAD_VALUE; status_t res = OK; if (!nameAlreadyRead) { name = readMaybeEmptyString16(parcel); // Discard this for now int isSingleBuffered; res = parcel->readInt32(&isSingleBuffered); if (res != OK) { ALOGE("Can't read isSingleBuffered"); return res; } } sp<IBinder> binder; res = parcel->readNullableStrongBinder(&binder); if (res != OK) { ALOGE("%s: Can't read strong binder", __FUNCTION__); return res; } graphicBufferProducer = interface_cast<IGraphicBufferProducer>(binder); return OK; } String16 Surface::readMaybeEmptyString16(const Parcel* parcel) { size_t len; const char16_t* str = parcel->readString16Inplace(&len); if (str != nullptr) { return String16(str, len); } else { return String16(); } } } // namespace view }; // namespace android