Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit df50b369 authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Android (Google) Code Review
Browse files

Merge "Merge "[TIAF] Dup AdBuffer early to avoid race conditions" into udc-dev...

Merge "Merge "[TIAF] Dup AdBuffer early to avoid race conditions" into udc-dev am: 3e143396" into udc-dev-plus-aosp
parents 1f0220ef 1115d5e6
Loading
Loading
Loading
Loading
+13 −1
Original line number Original line Diff line number Diff line
@@ -63,6 +63,7 @@ import android.widget.FrameLayout;
import com.android.internal.os.SomeArgs;
import com.android.internal.os.SomeArgs;
import com.android.internal.util.Preconditions;
import com.android.internal.util.Preconditions;


import java.io.IOException;
import java.lang.annotation.Retention;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.ArrayList;
@@ -1009,6 +1010,13 @@ public abstract class TvInputService extends Service {
         * @param buffer the {@link AdBuffer} that was consumed.
         * @param buffer the {@link AdBuffer} that was consumed.
         */
         */
        public void notifyAdBufferConsumed(@NonNull AdBuffer buffer) {
        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() {
            executeOrPostRunnableOnMainThread(new Runnable() {
                @MainThread
                @MainThread
                @Override
                @Override
@@ -1016,10 +1024,14 @@ public abstract class TvInputService extends Service {
                    try {
                    try {
                        if (DEBUG) Log.d(TAG, "notifyAdBufferConsumed");
                        if (DEBUG) Log.d(TAG, "notifyAdBufferConsumed");
                        if (mSessionCallback != null) {
                        if (mSessionCallback != null) {
                            mSessionCallback.onAdBufferConsumed(buffer);
                            mSessionCallback.onAdBufferConsumed(dupBuffer);
                        }
                        }
                    } catch (RemoteException e) {
                    } catch (RemoteException e) {
                        Log.w(TAG, "error in notifyAdBufferConsumed", e);
                        Log.w(TAG, "error in notifyAdBufferConsumed", e);
                    } finally {
                        if (dupBuffer != null) {
                            dupBuffer.getSharedMemory().close();
                        }
                    }
                    }
                }
                }
            });
            });
+13 −2
Original line number Original line Diff line number Diff line
@@ -1964,6 +1964,13 @@ public abstract class TvInteractiveAppService extends Service {
         */
         */
        @CallSuper
        @CallSuper
        public void notifyAdBufferReady(@NonNull AdBuffer buffer) {
        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() {
            executeOrPostRunnableOnMainThread(new Runnable() {
                @MainThread
                @MainThread
                @Override
                @Override
@@ -1974,10 +1981,14 @@ public abstract class TvInteractiveAppService extends Service {
                                    "notifyAdBufferReady(buffer=" + buffer + ")");
                                    "notifyAdBufferReady(buffer=" + buffer + ")");
                        }
                        }
                        if (mSessionCallback != null) {
                        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);
                        Log.w(TAG, "error in notifyAdBuffer", e);
                    } finally {
                        if (dupBuffer != null) {
                            dupBuffer.getSharedMemory().close();
                        }
                    }
                    }
                }
                }
            });
            });