Make VSyncCallbackRegistration's move operator= call unregisterCallback
Skipping unregisterCallback means that we might delete a callback while it is being called. Note that EventThread uses the move operator=, and this behaves differently than if it were stored in a unique_ptr like in MessageQueue. Update move operator= so that they do behave the same, and add tests verifying this, along with a couple other behavior tests. Note that this may result in deadlocks similar to those in b/276367387. That is fixed by If490f88115aa298d31aa9ad392a1f9f9dc987549. Cleanups: - Remove comment for VsyncCallbackRegistration regarding the lifetime requirement for the VSyncDispatch. Icdb80253436b4d0034fc20fcae8583efb7c30292 switched the VSyncDispatch to an std::shared_ptr from a reference, so the client no longer needs to ensure that the VSyncDispatch outlives the VsyncCallbackRegistration. - Replace mValidToken with using an std::optional for the token. Bug: 279209321 Test: VSyncCallbackRegistrationTest Change-Id: I3c1eccb36914f29560600d48bb08b1b8f2fe7c96
Loading
Please register or sign in to comment