Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
47cee97
logging for debugging
camsim99 May 29, 2025
c73110f
debugging logging pt 2
camsim99 May 29, 2025
44aa92a
Merge remote-tracking branch 'upstream/main' into abandon_2
camsim99 Jun 2, 2025
8d5223d
remove logs and add comment
camsim99 Jun 2, 2025
0b4dfa0
update wip
camsim99 Jun 16, 2025
f8cb294
update pr based on engine changes + add tests
camsim99 Jun 20, 2025
684eae4
Merge remote-tracking branch 'upstream/main' into abandon_2
camsim99 Jun 20, 2025
7918cbc
bump version
camsim99 Jun 20, 2025
4ddb4a8
Merge branch 'main' into abandon_2
camsim99 Jun 23, 2025
7f3b5be
grammatical fixes
camsim99 Jun 24, 2025
9825090
Merge remote-tracking branch 'refs/remotes/origin/abandon_2' into aba…
camsim99 Jun 24, 2025
3e13986
Merge remote-tracking branch 'upstream/main' into abandon_2
camsim99 Jun 24, 2025
f004fa9
Remove confusing word after preview
camsim99 Jun 24, 2025
b77d727
Update min flutter version
camsim99 Jul 28, 2025
086ac69
Merge remote-tracking branch 'upstream/main' into abandon_2
camsim99 Jul 28, 2025
83fb7c4
add 3.32.8 version
camsim99 Jul 28, 2025
25f5d11
bump sdk version
camsim99 Jul 28, 2025
560cdf7
format
camsim99 Jul 29, 2025
73c9f6d
Revert "format"
camsim99 Jul 29, 2025
dd6d449
logging for debugging
camsim99 May 29, 2025
071e2b2
debugging logging pt 2
camsim99 May 29, 2025
3d14565
remove logs and add comment
camsim99 Jun 2, 2025
04ed807
update wip
camsim99 Jun 16, 2025
201a6dd
update pr based on engine changes + add tests
camsim99 Jun 20, 2025
0d6d35b
bump version
camsim99 Jun 20, 2025
2b4241c
grammatical fixes
camsim99 Jun 24, 2025
9dab656
Remove confusing word after preview
camsim99 Jun 24, 2025
2ce311d
Update min flutter version
camsim99 Jul 28, 2025
f097100
add 3.32.8 version
camsim99 Jul 28, 2025
a164363
bump sdk version
camsim99 Jul 28, 2025
e03328e
format for real
camsim99 Jul 29, 2025
e3b8f70
Merge remote-tracking branch 'refs/remotes/origin/abandon_2' into aba…
camsim99 Jul 29, 2025
50b5f89
Merge remote-tracking branch 'upstream/main' into abandon_2
camsim99 Jul 29, 2025
792b70b
Update CODEOWNERS (#9692)
stuartmorgan-g Jul 29, 2025
5d2a10f
[video_player] Move more Obj-C logic to Dart (#9685)
stuartmorgan-g Jul 29, 2025
d914120
Roll Flutter from 46b097a3070d to c3279caa127d (18 revisions) (#9699)
engine-flutter-autoroll Jul 30, 2025
7a9e9ce
Fixed Camera Switching Bug (#9671)
jesswrd Jul 30, 2025
90df93b
format
camsim99 Jul 29, 2025
98e0404
Revert "format"
camsim99 Jul 29, 2025
6a9145b
logging for debugging
camsim99 May 29, 2025
a737309
debugging logging pt 2
camsim99 May 29, 2025
ae38c06
remove logs and add comment
camsim99 Jun 2, 2025
5d7042a
update wip
camsim99 Jun 16, 2025
12eb3a9
update pr based on engine changes + add tests
camsim99 Jun 20, 2025
cf1cc97
bump version
camsim99 Jun 20, 2025
0a67dd0
grammatical fixes
camsim99 Jun 24, 2025
85a7624
Remove confusing word after preview
camsim99 Jun 24, 2025
7cf96d9
Update min flutter version
camsim99 Jul 28, 2025
0ab3285
add 3.32.8 version
camsim99 Jul 28, 2025
772826b
bump sdk version
camsim99 Jul 28, 2025
ca10fc6
format for real
camsim99 Jul 29, 2025
1f857bd
logging for debugging
camsim99 May 29, 2025
7cc197e
debugging logging pt 2
camsim99 May 29, 2025
f19e7d3
remove logs and add comment
camsim99 Jun 2, 2025
e6d7751
update wip
camsim99 Jun 16, 2025
5af2100
update pr based on engine changes + add tests
camsim99 Jun 20, 2025
711cbae
bump version
camsim99 Jun 20, 2025
3fddb2b
Update min flutter version
camsim99 Jul 28, 2025
36c367c
bump sdk version
camsim99 Jul 28, 2025
49877ce
idk
camsim99 Jul 30, 2025
4ec9e5f
merge?
camsim99 Jul 30, 2025
126f02d
undo changes to test
camsim99 Jul 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .ci/flutter_master.version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
46b097a3070d9941a729a201b972c65414c40b37
c3279caa127d44914069326cd287c012bb3f2783
120 changes: 60 additions & 60 deletions CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ packages/image_picker/** @tarrinneal
packages/interactive_media_ads/** @bparrishMines
packages/in_app_purchase/** @bparrishMines
packages/local_auth/** @stuartmorgan-g
packages/metrics_center/** @christopherfujino
packages/metrics_center/** @bkonyi
packages/multicast_dns/** @vashworth
packages/path_provider/** @stuartmorgan-g
packages/pigeon/** @tarrinneal
Expand All @@ -32,12 +32,12 @@ packages/pointer_interceptor/** @ditman
packages/quick_actions/** @bparrishMines
packages/rfw/** @Hixie
packages/shared_preferences/** @tarrinneal
packages/standard_message_codec/** @jonahwilliams
packages/standard_message_codec/** @stuartmorgan-g
packages/two_dimensional_scrollables/** @Piinks
packages/url_launcher/** @stuartmorgan-g
packages/vector_graphics/** @jonahwilliams
packages/vector_graphics_codec/** @jonahwilliams
packages/vector_graphics_compiler/** @jonahwilliams
packages/vector_graphics/** @jtmcdole
packages/vector_graphics_codec/** @jtmcdole
packages/vector_graphics_compiler/** @jtmcdole
packages/video_player/** @tarrinneal
packages/web_benchmarks/** @yjbanov
packages/webview_flutter/** @bparrishMines
Expand All @@ -52,71 +52,71 @@ third_party/packages/path_parsing/** @domesticmouse
# matching entry takes precedence.

# - Web
packages/camera/camera_web/** @ditman
packages/file_selector/file_selector_web/** @ditman
packages/google_maps_flutter/google_maps_flutter_web/** @ditman
packages/google_sign_in/google_sign_in_web/** @ditman
packages/image_picker/image_picker_for_web/** @ditman
packages/pointer_interceptor/pointer_interceptor_web/** @ditman
packages/shared_preferences/shared_preferences_web/** @ditman
packages/url_launcher/url_launcher_web/** @ditman
packages/video_player/video_player_web/** @ditman
packages/webview_flutter/webview_flutter_web/** @ditman
packages/camera/camera_web/** @ditman
packages/file_selector/file_selector_web/** @ditman
packages/google_maps_flutter/google_maps_flutter_web/** @ditman
packages/google_sign_in/google_sign_in_web/** @ditman
packages/image_picker/image_picker_for_web/** @ditman
packages/pointer_interceptor/pointer_interceptor_web/** @ditman
packages/shared_preferences/shared_preferences_web/** @ditman
packages/url_launcher/url_launcher_web/** @ditman
packages/video_player/video_player_web/** @ditman
packages/webview_flutter/webview_flutter_web/** @ditman

# - Android
packages/camera/camera_android/** @camsim99
packages/camera/camera_android_camerax/** @camsim99
packages/espresso/** @jesswrd
packages/file_selector/file_selector_android/** @mboetger
packages/flutter_plugin_android_lifecycle/** @reidbaker
packages/google_maps_flutter/google_maps_flutter_android/** @reidbaker
packages/google_sign_in/google_sign_in_android/** @ash2moon
packages/image_picker/image_picker_android/** @gmackall
packages/in_app_purchase/in_app_purchase_android/** @gmackall
packages/local_auth/local_auth_android/** @mboetger
packages/path_provider/path_provider_android/** @camsim99
packages/quick_actions/quick_actions_android/** @ash2moon
packages/shared_preferences/shared_preferences_android/** @jesswrd
packages/url_launcher/url_launcher_android/** @gmackall
packages/video_player/video_player_android/** @ash2moon
packages/camera/camera_android/** @camsim99
packages/camera/camera_android_camerax/** @camsim99
packages/espresso/** @jesswrd
packages/file_selector/file_selector_android/** @mboetger
packages/flutter_plugin_android_lifecycle/** @reidbaker
packages/google_maps_flutter/google_maps_flutter_android/** @reidbaker
packages/google_sign_in/google_sign_in_android/** @ash2moon
packages/image_picker/image_picker_android/** @gmackall
packages/in_app_purchase/in_app_purchase_android/** @gmackall
packages/local_auth/local_auth_android/** @mboetger
packages/path_provider/path_provider_android/** @camsim99
packages/quick_actions/quick_actions_android/** @ash2moon
packages/shared_preferences/shared_preferences_android/** @jesswrd
packages/url_launcher/url_launcher_android/** @gmackall
packages/video_player/video_player_android/** @ash2moon
# Owned by ecosystem team for now during the wrapper evaluation.
packages/webview_flutter/webview_flutter_android/** @bparrishMines
packages/webview_flutter/webview_flutter_android/** @bparrishMines

# - Darwin
packages/camera/camera_avfoundation/** @hellohuanlin @vashworth
packages/file_selector/file_selector_ios/** @vashworth @cbracken
packages/file_selector/file_selector_macos/** @vashworth @cbracken
packages/google_maps_flutter/google_maps_flutter_ios/** @vashworth @cbracken
packages/google_sign_in/google_sign_in_ios/** @LongCatIsLooong @cbracken
packages/image_picker/image_picker_ios/** @vashworth @louisehsu
packages/image_picker/image_picker_macos/** @vashworth @louisehsu
packages/in_app_purchase/in_app_purchase_storekit/** @louisehsu @LongCatIsLooong
packages/local_auth/local_auth_darwin/** @cbracken @vashworth
packages/path_provider/path_provider_foundation/** @cbracken @vashworth
packages/pointer_interceptor/pointer_interceptor_ios/** @louisehsu @hellohuanlin
packages/quick_actions/quick_actions_ios/** @LongCatIsLooong @hellohuanlin
packages/camera/camera_avfoundation/** @hellohuanlin @vashworth
packages/file_selector/file_selector_ios/** @vashworth @cbracken
packages/file_selector/file_selector_macos/** @vashworth @cbracken
packages/google_maps_flutter/google_maps_flutter_ios/** @vashworth @cbracken
packages/google_sign_in/google_sign_in_ios/** @LongCatIsLooong @cbracken
packages/image_picker/image_picker_ios/** @vashworth @louisehsu
packages/image_picker/image_picker_macos/** @vashworth @louisehsu
packages/in_app_purchase/in_app_purchase_storekit/** @louisehsu @LongCatIsLooong
packages/local_auth/local_auth_darwin/** @cbracken @vashworth
packages/path_provider/path_provider_foundation/** @cbracken @vashworth
packages/pointer_interceptor/pointer_interceptor_ios/** @louisehsu @hellohuanlin
packages/quick_actions/quick_actions_ios/** @LongCatIsLooong @hellohuanlin
packages/shared_preferences/shared_preferences_foundation/** @tarrinneal
packages/url_launcher/url_launcher_ios/** @hellohuanlin @LongCatIsLooong
packages/url_launcher/url_launcher_macos/** @hellohuanlin @LongCatIsLooong
packages/video_player/video_player_avfoundation/** @LongCatIsLooong @hellohuanlin
packages/webview_flutter/webview_flutter_wkwebview/** @cbracken @louisehsu
packages/url_launcher/url_launcher_ios/** @hellohuanlin @LongCatIsLooong
packages/url_launcher/url_launcher_macos/** @hellohuanlin @LongCatIsLooong
packages/video_player/video_player_avfoundation/** @LongCatIsLooong @hellohuanlin
packages/webview_flutter/webview_flutter_wkwebview/** @cbracken @louisehsu

# - Linux
packages/file_selector/file_selector_linux/** @cbracken
packages/image_picker/image_picker_linux/** @cbracken
packages/path_provider/path_provider_linux/** @cbracken
packages/shared_preferences/shared_preferences_linux/** @cbracken
packages/url_launcher/url_launcher_linux/** @cbracken
packages/file_selector/file_selector_linux/** @stuartmorgan-g
packages/image_picker/image_picker_linux/** @stuartmorgan-g
packages/path_provider/path_provider_linux/** @stuartmorgan-g
packages/shared_preferences/shared_preferences_linux/** @stuartmorgan-g
packages/url_launcher/url_launcher_linux/** @stuartmorgan-g

# - Windows
packages/camera/camera_windows/** @cbracken
packages/file_selector/file_selector_windows/** @cbracken
packages/image_picker/image_picker_windows/** @cbracken
packages/local_auth/local_auth_windows/** @cbracken
packages/path_provider/path_provider_windows/** @cbracken
packages/shared_preferences/shared_preferences_windows/** @cbracken
packages/url_launcher/url_launcher_windows/** @cbracken
packages/camera/camera_windows/** @stuartmorgan-g
packages/file_selector/file_selector_windows/** @stuartmorgan-g
packages/image_picker/image_picker_windows/** @stuartmorgan-g
packages/local_auth/local_auth_windows/** @stuartmorgan-g
packages/path_provider/path_provider_windows/** @stuartmorgan-g
packages/shared_preferences/shared_preferences_windows/** @stuartmorgan-g
packages/url_launcher/url_launcher_windows/** @stuartmorgan-g

# - DevTools extensions
# @adsonpleal is the actual maintainer of shared_preferences_tool but is not yet a committer, so can't be listed as the owner.
packages/shared_preferences/shared_preferences_tool/** @tarrinneal
packages/shared_preferences/shared_preferences_tool/** @tarrinneal
10 changes: 10 additions & 0 deletions packages/camera/camera_android_camerax/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
## 0.6.20

* Ensures that a new surface is provided every time that one is requested to render the camera preview
to fix pausing and resuming the preview.
* Updates minimum supported SDK version to Flutter 3.32.8/Dart 3.8.1.

## 0.6.19+1

* Fixes incorrect camera switching by selecting a camera via its CameraInfo.

## 0.6.19

* Changes target rotation of captured images to current default display rotation to fix captured
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import androidx.camera.core.CameraInfo;
import androidx.camera.core.CameraSelector;
import androidx.camera.core.ExperimentalLensFacing;
import java.util.Collections;
import java.util.List;

/**
Expand All @@ -24,7 +25,8 @@ class CameraSelectorProxyApi extends PigeonApiCameraSelector {
@ExperimentalLensFacing
@NonNull
@Override
public CameraSelector pigeon_defaultConstructor(@Nullable LensFacing requireLensFacing) {
public CameraSelector pigeon_defaultConstructor(
@Nullable LensFacing requireLensFacing, @Nullable CameraInfo cameraInfoForFilter) {
final CameraSelector.Builder builder = new CameraSelector.Builder();
if (requireLensFacing != null) {
switch (requireLensFacing) {
Expand All @@ -42,6 +44,9 @@ public CameraSelector pigeon_defaultConstructor(@Nullable LensFacing requireLens
break;
}
}
if (cameraInfoForFilter != null) {
builder.addCameraFilter(cameraInfos -> Collections.singletonList(cameraInfoForFilter));
}
return builder.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2027,7 +2027,8 @@ abstract class PigeonApiCameraSelector(
open val pigeonRegistrar: CameraXLibraryPigeonProxyApiRegistrar
) {
abstract fun pigeon_defaultConstructor(
requireLensFacing: LensFacing?
requireLensFacing: LensFacing?,
cameraInfoForFilter: androidx.camera.core.CameraInfo?
): androidx.camera.core.CameraSelector

/** A static `CameraSelector` that selects the default back facing camera. */
Expand Down Expand Up @@ -2057,10 +2058,12 @@ abstract class PigeonApiCameraSelector(
val args = message as List<Any?>
val pigeon_identifierArg = args[0] as Long
val requireLensFacingArg = args[1] as LensFacing?
val cameraInfoForFilterArg = args[2] as androidx.camera.core.CameraInfo?
val wrapped: List<Any?> =
try {
api.pigeonRegistrar.instanceManager.addDartCreatedInstance(
api.pigeon_defaultConstructor(requireLensFacingArg), pigeon_identifierArg)
api.pigeon_defaultConstructor(requireLensFacingArg, cameraInfoForFilterArg),
pigeon_identifierArg)
listOf(null)
} catch (exception: Throwable) {
CameraXLibraryPigeonUtils.wrapError(exception)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public void onSurfaceCleanup() {
// Provide surface.
surfaceProducer.setSize(
request.getResolution().getWidth(), request.getResolution().getHeight());
Surface flutterSurface = surfaceProducer.getSurface();
Surface flutterSurface = surfaceProducer.getForcedNewSurface();
request.provideSurface(
flutterSurface,
Executors.newSingleThreadExecutor(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

import androidx.camera.core.CameraInfo;
import androidx.camera.core.CameraSelector;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
Expand All @@ -18,13 +19,30 @@ public class CameraSelectorTest {
@Test
public void pigeon_defaultConstructor_createsCameraSelectorInstanceWithLensFacing() {
final PigeonApiCameraSelector api = new TestProxyApiRegistrar().getPigeonApiCameraSelector();

final CameraSelector selector =
api.pigeon_defaultConstructor(io.flutter.plugins.camerax.LensFacing.FRONT);
api.pigeon_defaultConstructor(io.flutter.plugins.camerax.LensFacing.FRONT, null);

assertEquals(selector.getLensFacing(), (Integer) CameraSelector.LENS_FACING_FRONT);
}

@Test
public void pigeon_defaultConstructor_createsCameraSelectorInstanceWithCameraInfo() {
final PigeonApiCameraSelector api = new TestProxyApiRegistrar().getPigeonApiCameraSelector();
final androidx.camera.core.CameraInfo cameraInfo = mock(CameraInfo.class);
final androidx.camera.core.CameraInfo cameraInfoToSelect = mock(CameraInfo.class);

final CameraSelector selector = api.pigeon_defaultConstructor(null, cameraInfoToSelect);

final List<androidx.camera.core.CameraInfo> cameraInfosList = new ArrayList<>();
cameraInfosList.add(cameraInfo);
cameraInfosList.add(cameraInfoToSelect);

final List<androidx.camera.core.CameraInfo> filteredCameraInfosList =
selector.filter(new ArrayList<>(cameraInfosList));
assertEquals(1, filteredCameraInfosList.size());
assertEquals(cameraInfoToSelect, filteredCameraInfosList.get(0));
}

@Test
public void filter_callsFilterWithMethodParameters() {
final PigeonApiCameraSelector api = new TestProxyApiRegistrar().getPigeonApiCameraSelector();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ TextureRegistry getTextureRegistry() {
ArgumentCaptor.forClass(TextureRegistry.SurfaceProducer.Callback.class);

when(mockSurfaceRequest.getResolution()).thenReturn(new Size(5, 6));
when(mockSurfaceProducer.getSurface()).thenReturn(mock(Surface.class));
when(mockSurfaceProducer.getForcedNewSurface()).thenReturn(mock(Surface.class));

final Preview.SurfaceProvider previewSurfaceProvider =
api.createSurfaceProvider(mockSurfaceProducer, mockSystemServicesManager);
Expand Down Expand Up @@ -155,7 +155,7 @@ TextureRegistry getTextureRegistry() {

when(mockSurfaceRequest.getResolution())
.thenReturn(new Size(resolutionWidth, resolutionHeight));
when(mockSurfaceProducer.getSurface()).thenReturn(mockSurface);
when(mockSurfaceProducer.getForcedNewSurface()).thenReturn(mockSurface);

final ArgumentCaptor<Surface> surfaceCaptor = ArgumentCaptor.forClass(Surface.class);
final ArgumentCaptor<Consumer<SurfaceRequest.Result>> consumerCaptor =
Expand Down
Loading