Skip to content

Commit 3a73507

Browse files
Jamie GennisAndroid (Google) Code Review
authored andcommitted
Merge "SurfaceTexture: report binder transaction failures" into ics-mr0
2 parents c047f60 + 6cb7658 commit 3a73507

File tree

1 file changed

+56
-23
lines changed

1 file changed

+56
-23
lines changed

libs/gui/ISurfaceTexture.cpp

Lines changed: 56 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,16 @@ class BpSurfaceTexture : public BpInterface<ISurfaceTexture>
5858
Parcel data, reply;
5959
data.writeInterfaceToken(ISurfaceTexture::getInterfaceDescriptor());
6060
data.writeInt32(bufferIdx);
61-
remote()->transact(REQUEST_BUFFER, data, &reply);
61+
status_t result =remote()->transact(REQUEST_BUFFER, data, &reply);
62+
if (result != NO_ERROR) {
63+
return result;
64+
}
6265
bool nonNull = reply.readInt32();
6366
if (nonNull) {
6467
*buf = new GraphicBuffer();
6568
reply.read(**buf);
6669
}
67-
status_t result = reply.readInt32();
70+
result = reply.readInt32();
6871
return result;
6972
}
7073

@@ -73,9 +76,12 @@ class BpSurfaceTexture : public BpInterface<ISurfaceTexture>
7376
Parcel data, reply;
7477
data.writeInterfaceToken(ISurfaceTexture::getInterfaceDescriptor());
7578
data.writeInt32(bufferCount);
76-
remote()->transact(SET_BUFFER_COUNT, data, &reply);
77-
status_t err = reply.readInt32();
78-
return err;
79+
status_t result =remote()->transact(SET_BUFFER_COUNT, data, &reply);
80+
if (result != NO_ERROR) {
81+
return result;
82+
}
83+
result = reply.readInt32();
84+
return result;
7985
}
8086

8187
virtual status_t dequeueBuffer(int *buf, uint32_t w, uint32_t h,
@@ -86,9 +92,12 @@ class BpSurfaceTexture : public BpInterface<ISurfaceTexture>
8692
data.writeInt32(h);
8793
data.writeInt32(format);
8894
data.writeInt32(usage);
89-
remote()->transact(DEQUEUE_BUFFER, data, &reply);
95+
status_t result = remote()->transact(DEQUEUE_BUFFER, data, &reply);
96+
if (result != NO_ERROR) {
97+
return result;
98+
}
9099
*buf = reply.readInt32();
91-
int result = reply.readInt32();
100+
result = reply.readInt32();
92101
return result;
93102
}
94103

@@ -98,11 +107,14 @@ class BpSurfaceTexture : public BpInterface<ISurfaceTexture>
98107
data.writeInterfaceToken(ISurfaceTexture::getInterfaceDescriptor());
99108
data.writeInt32(buf);
100109
data.writeInt64(timestamp);
101-
remote()->transact(QUEUE_BUFFER, data, &reply);
110+
status_t result = remote()->transact(QUEUE_BUFFER, data, &reply);
111+
if (result != NO_ERROR) {
112+
return result;
113+
}
102114
*outWidth = reply.readInt32();
103115
*outHeight = reply.readInt32();
104116
*outTransform = reply.readInt32();
105-
status_t result = reply.readInt32();
117+
result = reply.readInt32();
106118
return result;
107119
}
108120

@@ -120,45 +132,60 @@ class BpSurfaceTexture : public BpInterface<ISurfaceTexture>
120132
data.writeFloat(reg.top);
121133
data.writeFloat(reg.right);
122134
data.writeFloat(reg.bottom);
123-
remote()->transact(SET_CROP, data, &reply);
124-
status_t result = reply.readInt32();
135+
status_t result = remote()->transact(SET_CROP, data, &reply);
136+
if (result != NO_ERROR) {
137+
return result;
138+
}
139+
result = reply.readInt32();
125140
return result;
126141
}
127142

128143
virtual status_t setTransform(uint32_t transform) {
129144
Parcel data, reply;
130145
data.writeInterfaceToken(ISurfaceTexture::getInterfaceDescriptor());
131146
data.writeInt32(transform);
132-
remote()->transact(SET_TRANSFORM, data, &reply);
133-
status_t result = reply.readInt32();
147+
status_t result = remote()->transact(SET_TRANSFORM, data, &reply);
148+
if (result != NO_ERROR) {
149+
return result;
150+
}
151+
result = reply.readInt32();
134152
return result;
135153
}
136154

137155
virtual status_t setScalingMode(int mode) {
138156
Parcel data, reply;
139157
data.writeInterfaceToken(ISurfaceTexture::getInterfaceDescriptor());
140158
data.writeInt32(mode);
141-
remote()->transact(SET_SCALING_MODE, data, &reply);
142-
status_t result = reply.readInt32();
159+
status_t result = remote()->transact(SET_SCALING_MODE, data, &reply);
160+
if (result != NO_ERROR) {
161+
return result;
162+
}
163+
result = reply.readInt32();
143164
return result;
144165
}
145166

146167
virtual int query(int what, int* value) {
147168
Parcel data, reply;
148169
data.writeInterfaceToken(ISurfaceTexture::getInterfaceDescriptor());
149170
data.writeInt32(what);
150-
remote()->transact(QUERY, data, &reply);
171+
status_t result = remote()->transact(QUERY, data, &reply);
172+
if (result != NO_ERROR) {
173+
return result;
174+
}
151175
value[0] = reply.readInt32();
152-
status_t result = reply.readInt32();
176+
result = reply.readInt32();
153177
return result;
154178
}
155179

156180
virtual status_t setSynchronousMode(bool enabled) {
157181
Parcel data, reply;
158182
data.writeInterfaceToken(ISurfaceTexture::getInterfaceDescriptor());
159183
data.writeInt32(enabled);
160-
remote()->transact(SET_SYNCHRONOUS_MODE, data, &reply);
161-
status_t result = reply.readInt32();
184+
status_t result = remote()->transact(SET_SYNCHRONOUS_MODE, data, &reply);
185+
if (result != NO_ERROR) {
186+
return result;
187+
}
188+
result = reply.readInt32();
162189
return result;
163190
}
164191

@@ -167,20 +194,26 @@ class BpSurfaceTexture : public BpInterface<ISurfaceTexture>
167194
Parcel data, reply;
168195
data.writeInterfaceToken(ISurfaceTexture::getInterfaceDescriptor());
169196
data.writeInt32(api);
170-
remote()->transact(CONNECT, data, &reply);
197+
status_t result = remote()->transact(CONNECT, data, &reply);
198+
if (result != NO_ERROR) {
199+
return result;
200+
}
171201
*outWidth = reply.readInt32();
172202
*outHeight = reply.readInt32();
173203
*outTransform = reply.readInt32();
174-
status_t result = reply.readInt32();
204+
result = reply.readInt32();
175205
return result;
176206
}
177207

178208
virtual status_t disconnect(int api) {
179209
Parcel data, reply;
180210
data.writeInterfaceToken(ISurfaceTexture::getInterfaceDescriptor());
181211
data.writeInt32(api);
182-
remote()->transact(DISCONNECT, data, &reply);
183-
status_t result = reply.readInt32();
212+
status_t result =remote()->transact(DISCONNECT, data, &reply);
213+
if (result != NO_ERROR) {
214+
return result;
215+
}
216+
result = reply.readInt32();
184217
return result;
185218
}
186219
};

0 commit comments

Comments
 (0)