-
Notifications
You must be signed in to change notification settings - Fork 6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add SurfaceProducer.Callback
lifecycle hooks
#53280
Merged
matanlurey
merged 14 commits into
flutter:main
from
matanlurey:surface-producer-lifecycle-148417
Jun 24, 2024
Merged
Changes from 8 commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
cee3859
Add a callback-based notification for surfaceRecreated.
matanlurey 2521e40
++
matanlurey 39350b0
++
matanlurey cdd9bdf
++
matanlurey 0559f81
Merge remote-tracking branch 'upstream/main' into surface-producer-li…
matanlurey a0ce64d
Added androidx.lifecycle thingy.
matanlurey d4281ce
Address feedback, cleanup a bit.
matanlurey 6254178
++
matanlurey f0829b7
++
matanlurey 56a8e68
++
matanlurey 21382e2
Update DEPS.
matanlurey 26b832b
++
matanlurey 7b570c7
Merge remote-tracking branch 'upstream/main' into surface-producer-li…
matanlurey c8b4446
++
matanlurey File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -63,3 +63,7 @@ android { | |
} | ||
} | ||
|
||
dependencies { | ||
implementation 'androidx.lifecycle:lifecycle-process:2.2.0' | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -62,7 +62,7 @@ interface TextureEntry { | |
/** @return The identity of this texture. */ | ||
long id(); | ||
|
||
/** Deregisters and releases all resources . */ | ||
/** De-registers and releases all resources . */ | ||
void release(); | ||
} | ||
|
||
|
@@ -79,18 +79,56 @@ interface SurfaceProducer extends TextureEntry { | |
int getHeight(); | ||
|
||
/** | ||
* Get a Surface that can be used to update the texture contents. | ||
* Direct access to the surface object. | ||
* | ||
* <p>NOTE: You should not cache the returned surface but instead invoke getSurface each time | ||
* you need to draw. The surface may change when the texture is resized or has its format | ||
* <p>When using this API, you will usually need to implement {@link SurfaceProducer.Callback} | ||
* and provide it to {@link #setCallback(Callback)} in order to be notified when an existing | ||
* surface has been destroyed (such as when the application goes to the background) or a new | ||
* surface has been created (such as when the application is resumed back to the foreground). | ||
* | ||
* <p>NOTE: You should not cache the returned surface but instead invoke {@code getSurface} each | ||
* time you need to draw. The surface may change when the texture is resized or has its format | ||
* changed. | ||
* | ||
* @return a Surface to use for a drawing target for various APIs. | ||
*/ | ||
Surface getSurface(); | ||
|
||
/** | ||
* Sets a callback that is notified when a previously created {@link Surface} returned by {@link | ||
* SurfaceProducer#getSurface()} is no longer valid, either due to being destroyed or being | ||
* changed. | ||
* | ||
* @param callback The callback to notify, or null to remove the callback. | ||
*/ | ||
void setCallback(Callback callback); | ||
|
||
/** Callback invoked by {@link #setCallback(Callback)}. */ | ||
interface Callback { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. naming nit: Callbacks? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
/** | ||
* Invoked when a previous surface is now invalid and a new surface is now available. | ||
* | ||
* <p>Typically plugins will use this callback as a signal to redraw, such as due to the | ||
* texture being resized, the format being changed, or the application being resumed after | ||
* being suspended in the background. | ||
*/ | ||
void onSurfaceChanged(); | ||
matanlurey marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
/** | ||
* Invoked when a previous surface is now invalid. | ||
* | ||
* <p>Typically plugins will use this callback as a signal to release resources. | ||
*/ | ||
void onSurfaceDestroyed(); | ||
} | ||
|
||
/** | ||
* @deprecated This method is not officially part of the public API surface and will be removed. | ||
*/ | ||
@Deprecated | ||
@SuppressWarnings("DeprecatedIsStillUsed") | ||
void scheduleFrame(); | ||
}; | ||
} | ||
|
||
/** A registry entry for a managed SurfaceTexture. */ | ||
@Keep | ||
|
@@ -144,7 +182,7 @@ interface ImageConsumer { | |
* @return Image or null. | ||
*/ | ||
@Nullable | ||
public Image acquireLatestImage(); | ||
Image acquireLatestImage(); | ||
} | ||
|
||
@Keep | ||
|
@@ -155,6 +193,6 @@ interface GLTextureConsumer { | |
* @return SurfaceTexture. | ||
*/ | ||
@NonNull | ||
public SurfaceTexture getSurfaceTexture(); | ||
SurfaceTexture getSurfaceTexture(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This shouldn't be necessary - do the new classes not resolve in android studio for you without it?
If they don't resolve without, I may need to revert #50840, I think something about that PR may have messed up how we resolve the android_embedding_dependencies jars
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You know, I'm not sure. I think this was auto-added by IntelliJ. Let me try removing and resyncing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It appears to work fine w/o, removing.