a9cbaf5097
- Collect dumpsys to an outfile file when triggered. - Collect dumpsys before calling Prepare on hwc module in each draw cycle. Recollect dumpsys if Commit goes through successfully and replace former dumpsys with this. - Wrap around if file size reaches appx 20 MB. - Generate output file at /data/misc/display/dumpsys.txt - Syntax: adb shell dumpsys SurfaceFlinger --file [--no-limit] --file : Ouput dumpsys to file --no-limit : Do not wrap around, keep appending Use same command to trigger start and end of dumping. - Output format: | start code | after commit? | time stamp | dump size | dump data | CRs-Fixed: 947084 Change-Id: Ie520f51c69757aeec88b9400688a7f3271472349
101 lines
3.8 KiB
C++
101 lines
3.8 KiB
C++
/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are
|
|
* met:
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* * Redistributions in binary form must reproduce the above
|
|
* copyright notice, this list of conditions and the following
|
|
* disclaimer in the documentation and/or other materials provided
|
|
* with the distribution.
|
|
* * Neither the name of The Linux Foundation nor the names of its
|
|
* contributors may be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#ifndef ANDROID_EX_SURFACE_FLINGER_H
|
|
#define ANDROID_EX_SURFACE_FLINGER_H
|
|
|
|
#include "SurfaceFlinger.h"
|
|
|
|
namespace android {
|
|
|
|
class ExSurfaceFlinger : public SurfaceFlinger
|
|
{
|
|
public:
|
|
|
|
ExSurfaceFlinger();
|
|
|
|
protected:
|
|
friend class ExLayer;
|
|
|
|
virtual void updateExtendedMode();
|
|
virtual void getIndexLOI(size_t dpy,
|
|
const LayerVector& currentLayers,
|
|
bool& bIgnoreLayers,
|
|
int& indexLOI);
|
|
virtual bool updateLayerVisibleNonTransparentRegion(
|
|
const int& dpy, const sp<Layer>& layer,
|
|
bool& bIgnoreLayers, int& indexLOI,
|
|
uint32_t layerStack, const int& i);
|
|
virtual void delayDPTransactionIfNeeded(
|
|
const Vector<DisplayState>& displays);
|
|
virtual bool canDrawLayerinScreenShot(
|
|
const sp<const DisplayDevice>& hw,
|
|
const sp<Layer>& layer);
|
|
virtual void isfreezeSurfacePresent(
|
|
bool& freezeSurfacePresent,
|
|
const sp<const DisplayDevice>& hw,
|
|
const int32_t& id);
|
|
virtual void setOrientationEventControl(
|
|
bool& freezeSurfacePresent,
|
|
const int32_t& id);
|
|
virtual void updateVisibleRegionsDirty();
|
|
virtual void drawWormHoleIfRequired(HWComposer::LayerListIterator& /*cur*/,
|
|
const HWComposer::LayerListIterator& /*end*/,
|
|
const sp<const DisplayDevice>& hw,
|
|
const Region& region);
|
|
virtual ~ExSurfaceFlinger();
|
|
|
|
/* Extended Mode
|
|
* No video on primary but video will be shown full
|
|
* screen on External
|
|
*/
|
|
static bool sExtendedMode;
|
|
static bool isExtendedMode() { return sExtendedMode; }
|
|
bool mDebugLogs;
|
|
bool isDebug() { return mDebugLogs; }
|
|
bool mDisableExtAnimation;
|
|
|
|
#ifdef DEBUG_CONT_DUMPSYS
|
|
virtual status_t dump(int fd, const Vector<String16>& args);
|
|
virtual void dumpDrawCycle(bool prePrepare );
|
|
|
|
struct {
|
|
Mutex lock;
|
|
const char *name = "/data/misc/display/dumpsys.txt";
|
|
bool running = false;
|
|
bool noLimit = false;
|
|
bool replaceAfterCommit = false;
|
|
long int position = 0;
|
|
} mFileDump;
|
|
#endif
|
|
};
|
|
|
|
}; //namespace android
|
|
|
|
#endif //ANDROID_EX_SURFACE_FLINGER_H
|