Merge "[TIAF] Dup AdBuffer early to avoid race conditions" into udc-dev am: 3e143396ac
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23420990 Change-Id: Ie06aa5afc7da86dae3e953768811f25d62dfce74 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -63,6 +63,7 @@ import android.widget.FrameLayout;
|
||||
import com.android.internal.os.SomeArgs;
|
||||
import com.android.internal.util.Preconditions;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.ArrayList;
|
||||
@@ -1009,6 +1010,13 @@ public abstract class TvInputService extends Service {
|
||||
* @param buffer the {@link AdBuffer} that was consumed.
|
||||
*/
|
||||
public void notifyAdBufferConsumed(@NonNull AdBuffer buffer) {
|
||||
AdBuffer dupBuffer;
|
||||
try {
|
||||
dupBuffer = AdBuffer.dupAdBuffer(buffer);
|
||||
} catch (IOException e) {
|
||||
Log.w(TAG, "dup AdBuffer error in notifyAdBufferConsumed:", e);
|
||||
return;
|
||||
}
|
||||
executeOrPostRunnableOnMainThread(new Runnable() {
|
||||
@MainThread
|
||||
@Override
|
||||
@@ -1016,10 +1024,14 @@ public abstract class TvInputService extends Service {
|
||||
try {
|
||||
if (DEBUG) Log.d(TAG, "notifyAdBufferConsumed");
|
||||
if (mSessionCallback != null) {
|
||||
mSessionCallback.onAdBufferConsumed(buffer);
|
||||
mSessionCallback.onAdBufferConsumed(dupBuffer);
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "error in notifyAdBufferConsumed", e);
|
||||
} finally {
|
||||
if (dupBuffer != null) {
|
||||
dupBuffer.getSharedMemory().close();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1964,6 +1964,13 @@ public abstract class TvInteractiveAppService extends Service {
|
||||
*/
|
||||
@CallSuper
|
||||
public void notifyAdBufferReady(@NonNull AdBuffer buffer) {
|
||||
AdBuffer dupBuffer;
|
||||
try {
|
||||
dupBuffer = AdBuffer.dupAdBuffer(buffer);
|
||||
} catch (IOException e) {
|
||||
Log.w(TAG, "dup AdBuffer error in notifyAdBufferReady:", e);
|
||||
return;
|
||||
}
|
||||
executeOrPostRunnableOnMainThread(new Runnable() {
|
||||
@MainThread
|
||||
@Override
|
||||
@@ -1974,10 +1981,14 @@ public abstract class TvInteractiveAppService extends Service {
|
||||
"notifyAdBufferReady(buffer=" + buffer + ")");
|
||||
}
|
||||
if (mSessionCallback != null) {
|
||||
mSessionCallback.onAdBufferReady(AdBuffer.dupAdBuffer(buffer));
|
||||
mSessionCallback.onAdBufferReady(dupBuffer);
|
||||
}
|
||||
} catch (RemoteException | IOException e) {
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "error in notifyAdBuffer", e);
|
||||
} finally {
|
||||
if (dupBuffer != null) {
|
||||
dupBuffer.getSharedMemory().close();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user