replicant-frameworks_native/libs/gui/LayerState.cpp
Michael Lentine 47e45405d1 Allow for resizing of Virtual Displays.
Modify SurfaceFlinger to use VirtualDisplaySurface in all cases when a virtual
display is used. Add functionality in VirtualDisplaySurface to resize the
buffers aquired in the QueueBufferOutput. Add transaction support in
SurfaceFlinger for resize. Add the modification of the size in DisplayDevice.

Change-Id: Iae7e3556dc06fd18d470adbbd76f7255f6e6dd6b
Tested: None
2014-07-30 14:36:25 -07:00

104 lines
3.0 KiB
C++

/*
* Copyright (C) 2008 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.
*/
#include <utils/Errors.h>
#include <binder/Parcel.h>
#include <gui/ISurfaceComposerClient.h>
#include <gui/IGraphicBufferProducer.h>
#include <private/gui/LayerState.h>
namespace android {
status_t layer_state_t::write(Parcel& output) const
{
output.writeStrongBinder(surface);
output.writeInt32(what);
output.writeFloat(x);
output.writeFloat(y);
output.writeInt32(z);
output.writeInt32(w);
output.writeInt32(h);
output.writeInt32(layerStack);
output.writeFloat(alpha);
output.writeInt32(flags);
output.writeInt32(mask);
*reinterpret_cast<layer_state_t::matrix22_t *>(
output.writeInplace(sizeof(layer_state_t::matrix22_t))) = matrix;
output.write(crop);
output.write(transparentRegion);
return NO_ERROR;
}
status_t layer_state_t::read(const Parcel& input)
{
surface = input.readStrongBinder();
what = input.readInt32();
x = input.readFloat();
y = input.readFloat();
z = input.readInt32();
w = input.readInt32();
h = input.readInt32();
layerStack = input.readInt32();
alpha = input.readFloat();
flags = input.readInt32();
mask = input.readInt32();
matrix = *reinterpret_cast<layer_state_t::matrix22_t const *>(
input.readInplace(sizeof(layer_state_t::matrix22_t)));
input.read(crop);
input.read(transparentRegion);
return NO_ERROR;
}
status_t ComposerState::write(Parcel& output) const {
output.writeStrongBinder(client->asBinder());
return state.write(output);
}
status_t ComposerState::read(const Parcel& input) {
client = interface_cast<ISurfaceComposerClient>(input.readStrongBinder());
return state.read(input);
}
status_t DisplayState::write(Parcel& output) const {
output.writeStrongBinder(token);
output.writeStrongBinder(surface->asBinder());
output.writeInt32(what);
output.writeInt32(layerStack);
output.writeInt32(orientation);
output.write(viewport);
output.write(frame);
output.writeInt32(width);
output.writeInt32(height);
return NO_ERROR;
}
status_t DisplayState::read(const Parcel& input) {
token = input.readStrongBinder();
surface = interface_cast<IGraphicBufferProducer>(input.readStrongBinder());
what = input.readInt32();
layerStack = input.readInt32();
orientation = input.readInt32();
input.read(viewport);
input.read(frame);
width = input.readInt32();
height = input.readInt32();
return NO_ERROR;
}
}; // namespace android