diff options
author | 2021-03-16 15:51:53 +0100 | |
---|---|---|
committer | 2021-03-18 15:46:55 +0100 | |
commit | 3b1f7bcf8fd0ca2458eb26ec31a1bddf4bf7fd43 (patch) | |
tree | 3b022e6e90eaf1d5fd16b3e0a7d09dd9afd8cea0 | |
parent | 574c58d9922a99a0ab78efefabfad1977ef793c4 (diff) |
Extract ParcelableUtils to avoid code duplication
Currently the SAFE_PARCEL macros are copies on multiple places.
This CL extracts them in a single ParcelableUtils.
Additionally in SAFE_PARCEL also the stringified error is printed.
Bug: 179116474
Test: presubmit
Change-Id: Ie09c3a9753b5742be14fe3cdb0061d5c64465e66
-rw-r--r-- | libs/gui/FrameTimelineInfo.cpp | 1 | ||||
-rw-r--r-- | libs/gui/ISurfaceComposer.cpp | 1 | ||||
-rw-r--r-- | libs/gui/ITransactionCompletedListener.cpp | 3 | ||||
-rw-r--r-- | libs/gui/LayerState.cpp | 1 | ||||
-rw-r--r-- | libs/gui/ScreenCaptureResults.cpp | 2 | ||||
-rw-r--r-- | libs/gui/SurfaceComposerClient.cpp | 1 | ||||
-rw-r--r-- | libs/gui/SurfaceControl.cpp | 1 | ||||
-rw-r--r-- | libs/gui/include/gui/LayerState.h | 18 | ||||
-rw-r--r-- | libs/gui/include/gui/ScreenCaptureResults.h | 9 | ||||
-rw-r--r-- | libs/gui/include/private/gui/ParcelUtils.h | 38 |
10 files changed, 48 insertions, 27 deletions
diff --git a/libs/gui/FrameTimelineInfo.cpp b/libs/gui/FrameTimelineInfo.cpp index f40077403a..9231a570fc 100644 --- a/libs/gui/FrameTimelineInfo.cpp +++ b/libs/gui/FrameTimelineInfo.cpp @@ -21,6 +21,7 @@ #include <android/os/IInputConstants.h> #include <gui/FrameTimelineInfo.h> #include <gui/LayerState.h> +#include <private/gui/ParcelUtils.h> #include <utils/Errors.h> #include <cmath> diff --git a/libs/gui/ISurfaceComposer.cpp b/libs/gui/ISurfaceComposer.cpp index 989abd9a15..f44f10a2ce 100644 --- a/libs/gui/ISurfaceComposer.cpp +++ b/libs/gui/ISurfaceComposer.cpp @@ -28,6 +28,7 @@ #include <gui/ISurfaceComposerClient.h> #include <gui/LayerDebugInfo.h> #include <gui/LayerState.h> +#include <private/gui/ParcelUtils.h> #include <stdint.h> #include <sys/types.h> #include <system/graphics.h> diff --git a/libs/gui/ITransactionCompletedListener.cpp b/libs/gui/ITransactionCompletedListener.cpp index 0ded9361bf..2579f50f2a 100644 --- a/libs/gui/ITransactionCompletedListener.cpp +++ b/libs/gui/ITransactionCompletedListener.cpp @@ -17,9 +17,10 @@ #define LOG_TAG "ITransactionCompletedListener" //#define LOG_NDEBUG 0 -#include <gui/LayerState.h> #include <gui/ISurfaceComposer.h> #include <gui/ITransactionCompletedListener.h> +#include <gui/LayerState.h> +#include <private/gui/ParcelUtils.h> namespace android { diff --git a/libs/gui/LayerState.cpp b/libs/gui/LayerState.cpp index 6bb8bf2d5b..04a878563e 100644 --- a/libs/gui/LayerState.cpp +++ b/libs/gui/LayerState.cpp @@ -23,6 +23,7 @@ #include <gui/IGraphicBufferProducer.h> #include <gui/ISurfaceComposerClient.h> #include <gui/LayerState.h> +#include <private/gui/ParcelUtils.h> #include <utils/Errors.h> #include <cmath> diff --git a/libs/gui/ScreenCaptureResults.cpp b/libs/gui/ScreenCaptureResults.cpp index f3849bcdcd..e91f74f3d3 100644 --- a/libs/gui/ScreenCaptureResults.cpp +++ b/libs/gui/ScreenCaptureResults.cpp @@ -16,6 +16,8 @@ #include <gui/ScreenCaptureResults.h> +#include <private/gui/ParcelUtils.h> + namespace android::gui { status_t ScreenCaptureResults::writeToParcel(android::Parcel* parcel) const { diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index f56578981b..18a0cbd1c0 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -39,6 +39,7 @@ #include <gui/LayerState.h> #include <gui/Surface.h> #include <gui/SurfaceComposerClient.h> +#include <private/gui/ParcelUtils.h> #include <ui/DisplayMode.h> #include <ui/DynamicDisplayInfo.h> diff --git a/libs/gui/SurfaceControl.cpp b/libs/gui/SurfaceControl.cpp index 1dcfe2e804..7e2f8f9d36 100644 --- a/libs/gui/SurfaceControl.cpp +++ b/libs/gui/SurfaceControl.cpp @@ -39,6 +39,7 @@ #include <gui/Surface.h> #include <gui/SurfaceComposerClient.h> #include <gui/SurfaceControl.h> +#include <private/gui/ParcelUtils.h> namespace android { diff --git a/libs/gui/include/gui/LayerState.h b/libs/gui/include/gui/LayerState.h index 183ec40fba..f7a66985b7 100644 --- a/libs/gui/include/gui/LayerState.h +++ b/libs/gui/include/gui/LayerState.h @@ -16,23 +16,7 @@ #ifndef ANDROID_SF_LAYER_STATE_H #define ANDROID_SF_LAYER_STATE_H -#define SAFE_PARCEL(FUNC, ...) \ - { \ - status_t error = FUNC(__VA_ARGS__); \ - if (error) { \ - ALOGE("ERROR(%d). Failed to call parcel %s(%s)", error, #FUNC, #__VA_ARGS__); \ - return error; \ - } \ - } - -#define SAFE_PARCEL_READ_SIZE(FUNC, COUNT, SIZE) \ - { \ - SAFE_PARCEL(FUNC, COUNT); \ - if (static_cast<unsigned int>(*COUNT) > SIZE) { \ - ALOGE("ERROR(BAD_VALUE). %s was greater than dataSize", #COUNT); \ - return BAD_VALUE; \ - } \ - } + #include <stdint.h> #include <sys/types.h> diff --git a/libs/gui/include/gui/ScreenCaptureResults.h b/libs/gui/include/gui/ScreenCaptureResults.h index 0ccc6e8b8a..99c35c1a3d 100644 --- a/libs/gui/include/gui/ScreenCaptureResults.h +++ b/libs/gui/include/gui/ScreenCaptureResults.h @@ -16,15 +16,6 @@ #pragma once -#define SAFE_PARCEL(FUNC, ...) \ - { \ - status_t error = FUNC(__VA_ARGS__); \ - if (error) { \ - ALOGE("ERROR(%d). Failed to call parcel %s(%s)", error, #FUNC, #__VA_ARGS__); \ - return error; \ - } \ - } - #include <binder/Parcel.h> #include <binder/Parcelable.h> #include <ui/Fence.h> diff --git a/libs/gui/include/private/gui/ParcelUtils.h b/libs/gui/include/private/gui/ParcelUtils.h new file mode 100644 index 0000000000..1cdd07e36e --- /dev/null +++ b/libs/gui/include/private/gui/ParcelUtils.h @@ -0,0 +1,38 @@ +/* + * Copyright 2021 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. + */ + +#pragma once + +#include <cstring> + +#define SAFE_PARCEL(FUNC, ...) \ + { \ + status_t error = FUNC(__VA_ARGS__); \ + if (error) { \ + ALOGE("ERROR(%s, %d). Failed to call parcel %s(%s)", strerror(-error), error, #FUNC, \ + #__VA_ARGS__); \ + return error; \ + } \ + } + +#define SAFE_PARCEL_READ_SIZE(FUNC, COUNT, SIZE) \ + { \ + SAFE_PARCEL(FUNC, COUNT); \ + if (static_cast<unsigned int>(*COUNT) > SIZE) { \ + ALOGE("ERROR(BAD_VALUE). %s was greater than dataSize", #COUNT); \ + return BAD_VALUE; \ + } \ + }
\ No newline at end of file |