~xnox/ubuntu/trusty/gcc-arm-linux-androideabi/dima

« back to all changes in this revision

Viewing changes to android/frameworks/native/libs/gui/LayerState.cpp

  • Committer: Package Import Robot
  • Author(s): Dmitrijs Ledkovs
  • Date: 2013-07-05 10:12:24 UTC
  • Revision ID: package-import@ubuntu.com-20130705101224-6qo3e8jbz8p31aa1
Tags: upstream-0.20130705.1
ImportĀ upstreamĀ versionĀ 0.20130705.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2008 The Android Open Source Project
 
3
 *
 
4
 * Licensed under the Apache License, Version 2.0 (the "License");
 
5
 * you may not use this file except in compliance with the License.
 
6
 * You may obtain a copy of the License at
 
7
 *
 
8
 *      http://www.apache.org/licenses/LICENSE-2.0
 
9
 *
 
10
 * Unless required by applicable law or agreed to in writing, software
 
11
 * distributed under the License is distributed on an "AS IS" BASIS,
 
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
13
 * See the License for the specific language governing permissions and
 
14
 * limitations under the License.
 
15
 */
 
16
 
 
17
#include <utils/Errors.h>
 
18
#include <binder/Parcel.h>
 
19
#include <gui/ISurfaceComposerClient.h>
 
20
#include <private/gui/LayerState.h>
 
21
 
 
22
namespace android {
 
23
 
 
24
status_t layer_state_t::write(Parcel& output) const
 
25
{
 
26
    status_t err;
 
27
 
 
28
    size_t len = transparentRegion.write(NULL, 0);
 
29
    err = output.writeInt32(len);
 
30
    if (err < NO_ERROR) return err;
 
31
 
 
32
    void* buf = output.writeInplace(len);
 
33
    if (buf == NULL) return NO_MEMORY;
 
34
 
 
35
    err = transparentRegion.write(buf, len);
 
36
    if (err < NO_ERROR) return err;
 
37
 
 
38
    // NOTE: regions are at the end of the structure
 
39
    size_t size = sizeof(layer_state_t);
 
40
    size -= sizeof(transparentRegion);
 
41
    err = output.write(this, size);
 
42
    return err;
 
43
}
 
44
 
 
45
status_t layer_state_t::read(const Parcel& input)
 
46
{
 
47
    status_t err;
 
48
    size_t len = input.readInt32();
 
49
    void const* buf = input.readInplace(len);
 
50
    if (buf == NULL) return NO_MEMORY;
 
51
 
 
52
    err = transparentRegion.read(buf);
 
53
    if (err < NO_ERROR) return err;
 
54
 
 
55
    // NOTE: regions are at the end of the structure
 
56
    size_t size = sizeof(layer_state_t);
 
57
    size -= sizeof(transparentRegion);
 
58
    input.read(this, size);
 
59
    return NO_ERROR;
 
60
}
 
61
 
 
62
status_t ComposerState::write(Parcel& output) const {
 
63
    output.writeStrongBinder(client->asBinder());
 
64
    return state.write(output);
 
65
}
 
66
 
 
67
status_t ComposerState::read(const Parcel& input) {
 
68
    client = interface_cast<ISurfaceComposerClient>(input.readStrongBinder());
 
69
    return state.read(input);
 
70
}
 
71
 
 
72
}; // namespace android