1edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project/* 2edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 4edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * you may not use this file except in compliance with the License. 6edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * You may obtain a copy of the License at 7edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 8edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 10edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * See the License for the specific language governing permissions and 14edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * limitations under the License. 15edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 16edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 17edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <utils/Errors.h> 18c5b2c0bf8007562536b822eb060fc54a01f8e08bMathias Agopian#include <binder/Parcel.h> 1990ac799241f077a7b7e6c1875fd933864c8dd2a7Mathias Agopian#include <gui/ISurfaceComposerClient.h> 208b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian#include <gui/ISurfaceTexture.h> 2190ac799241f077a7b7e6c1875fd933864c8dd2a7Mathias Agopian#include <private/gui/LayerState.h> 22edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 23edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace android { 24edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 25edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectstatus_t layer_state_t::write(Parcel& output) const 26edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 27b6121422ef641dc7317d1c3bf1d38b7d73922250Mathias Agopian status_t err; 28b6121422ef641dc7317d1c3bf1d38b7d73922250Mathias Agopian 298683fca395d01734ec7946e9f0595ec5d7b754c6Mathias Agopian err = output.write(transparentRegion); 30b6121422ef641dc7317d1c3bf1d38b7d73922250Mathias Agopian if (err < NO_ERROR) return err; 31b6121422ef641dc7317d1c3bf1d38b7d73922250Mathias Agopian 32b6121422ef641dc7317d1c3bf1d38b7d73922250Mathias Agopian // NOTE: regions are at the end of the structure 33edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project size_t size = sizeof(layer_state_t); 34edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project size -= sizeof(transparentRegion); 35b6121422ef641dc7317d1c3bf1d38b7d73922250Mathias Agopian err = output.write(this, size); 36b6121422ef641dc7317d1c3bf1d38b7d73922250Mathias Agopian return err; 37edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 38edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 39edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectstatus_t layer_state_t::read(const Parcel& input) 40edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 41b6121422ef641dc7317d1c3bf1d38b7d73922250Mathias Agopian status_t err; 42b6121422ef641dc7317d1c3bf1d38b7d73922250Mathias Agopian 438683fca395d01734ec7946e9f0595ec5d7b754c6Mathias Agopian err = input.read(transparentRegion); 44b6121422ef641dc7317d1c3bf1d38b7d73922250Mathias Agopian if (err < NO_ERROR) return err; 45b6121422ef641dc7317d1c3bf1d38b7d73922250Mathias Agopian 46b6121422ef641dc7317d1c3bf1d38b7d73922250Mathias Agopian // NOTE: regions are at the end of the structure 47edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project size_t size = sizeof(layer_state_t); 48edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project size -= sizeof(transparentRegion); 49edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project input.read(this, size); 50edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project return NO_ERROR; 51edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 52edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 53698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopianstatus_t ComposerState::write(Parcel& output) const { 54698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopian output.writeStrongBinder(client->asBinder()); 55698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopian return state.write(output); 56698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopian} 57698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopian 58698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopianstatus_t ComposerState::read(const Parcel& input) { 59698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopian client = interface_cast<ISurfaceComposerClient>(input.readStrongBinder()); 60698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopian return state.read(input); 61698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopian} 62698c0873cf2e07bdc7fd1e72169aee2a19fa40d7Mathias Agopian 638b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian 648b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopianstatus_t DisplayState::write(Parcel& output) const { 65e57f292595bec48f65c8088b00ff6beea01217e9Mathias Agopian output.writeStrongBinder(token); 668b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian output.writeStrongBinder(surface->asBinder()); 67e57f292595bec48f65c8088b00ff6beea01217e9Mathias Agopian output.writeInt32(what); 688b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian output.writeInt32(layerStack); 698b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian output.writeInt32(orientation); 708683fca395d01734ec7946e9f0595ec5d7b754c6Mathias Agopian output.write(viewport); 718683fca395d01734ec7946e9f0595ec5d7b754c6Mathias Agopian output.write(frame); 728b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian return NO_ERROR; 738b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian} 748b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian 758b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopianstatus_t DisplayState::read(const Parcel& input) { 76e57f292595bec48f65c8088b00ff6beea01217e9Mathias Agopian token = input.readStrongBinder(); 778b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian surface = interface_cast<ISurfaceTexture>(input.readStrongBinder()); 78e57f292595bec48f65c8088b00ff6beea01217e9Mathias Agopian what = input.readInt32(); 798b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian layerStack = input.readInt32(); 808b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian orientation = input.readInt32(); 818683fca395d01734ec7946e9f0595ec5d7b754c6Mathias Agopian input.read(viewport); 828683fca395d01734ec7946e9f0595ec5d7b754c6Mathias Agopian input.read(frame); 838b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian return NO_ERROR; 848b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian} 858b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian 868b33f032327f8de0dcc0e6d0d43ed80f834b51f6Mathias Agopian 87edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; // namespace android 88