Hey Josh,
Here is confirmation of the issue using a vastly simplified project setup built with Starling 1.7.1, Feathers 2.2.0 and either AIR 19.0.0.124 or 18.0.0.143.
The app launches on the device, after a few seconds playback starts and after a slight pause the device is rotated. A crash occurs every time regardless of AIR SDK version.
I will update this info tomorrow when i'm in the office as we have several other devices to test against.
Below is the output when running on the devices plus code.
HTC One S -> Android 4.1.1
Trying to connect to Player
Player connected; session starting.
[trace] [object Main] Main
[trace] [object Main] initStage
[trace] [object Main] init
[trace] [object Main] configureStarling
[trace] [Starling] Initialization complete.
[trace] [Starling] Display Driver: OpenGL
[trace] [object Main] -----> onStarlingContext <-----
[trace] [object StarlingContainer] StarlingContainer
[trace] [object StarlingContainer] initStage
[trace] [object StarlingContainer] init
[trace] [object Main] onStarlingRoot
[trace] [object StarlingContainer] onVideoPlayerReady
[trace] [Starling] Initialization complete.
[trace] [Starling] Display Driver: OpenGL
[trace] [object Main] -----> onStarlingContext <-----
[Fault] exception, information=Error: Error #3605: Sampler 0 binds an invalid texture.
HTC Desire 510 -> Android 4.4.3
Trying to connect to Player
Player connected; session starting.
[trace] [object Main] Main
[trace] [object Main] initStage
[trace] [object Main] init
[trace] [object Main] configureStarling
[trace] [Starling] Initialization complete.
[trace] [Starling] Display Driver: OpenGL
[trace] [object Main] -----> onStarlingContext <-----
[trace] [object StarlingContainer] StarlingContainer
[trace] [object StarlingContainer] initStage
[trace] [object StarlingContainer] init
[trace] [object Main] onStarlingRoot
[trace] [object StarlingContainer] onVideoPlayerReady
[trace] [Starling] Initialization complete.
[trace] [Starling] Display Driver: OpenGL
[trace] [object Main] -----> onStarlingContext <-----
[Fault] exception, information=Error: Error #3605: Sampler 0 binds an invalid texture.
Samsung GT-P7300 -> Android 4.0.4
Trying to connect to Player
Player connected; session starting.
[trace] [object Main] Main
[trace] [object Main] initStage
[trace] [object Main] init
[trace] [object Main] configureStarling
[trace] [Starling] Initialization complete.
[trace] [Starling] Display Driver: OpenGL
[trace] [object Main] -----> onStarlingContext <-----
[trace] [object StarlingContainer] StarlingContainer
[trace] [object StarlingContainer] initStage
[trace] [object StarlingContainer] init
[trace] [object Main] onStarlingRoot
[trace] [object StarlingContainer] onVideoPlayerReady
[trace] [Starling] Initialization complete.
[trace] [Starling] Display Driver: OpenGL
[trace] [object Main] -----> onStarlingContext <-----
[Fault] exception, information=Error: Error #3605: Sampler 0 binds an invalid texture.
package {
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.display3D.Context3DProfile;
import flash.display3D.Context3DRenderMode;
import flash.events.Event;
import starling.core.Starling;
import starling.events.Event;
public class Main extends Sprite {
private var starlingUi:Starling;
public function Main() {
trace(this, "Main");
addEventListener(flash.events.Event.ADDED_TO_STAGE, initStage);
}
private function initStage(event:flash.events.Event):void {
trace(this, "initStage");
removeEventListener(flash.events.Event.ADDED_TO_STAGE, initStage);
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
init();
}
private function configureStarling():void {
trace(this, "configureStarling");
Starling.multitouchEnabled = false;
Starling.handleLostContext = true;
}
private function init():void {
trace(this, "init");
// loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
configureStarling();
starlingUi = new Starling(StarlingContainer, stage, null, null, Context3DRenderMode.AUTO, Context3DProfile.BASELINE);
starlingUi.enableErrorChecking = true;
starlingUi.simulateMultitouch = false;
starlingUi.showStats = false;
// starlingUi.supportHighResolutions = true;
starlingUi.addEventListener(starling.events.Event.CONTEXT3D_CREATE, onStarlingContext);
starlingUi.addEventListener(starling.events.Event.ROOT_CREATED, onStarlingRoot);
starlingUi.addEventListener(starling.events.Event.FATAL_ERROR, onStarlingFatal);
starlingUi.addEventListener(starling.events.Event.RENDER, onStarlingRender);
starlingUi.start();
}
private function onStarlingContext(event:starling.events.Event):void {
trace(this, "-----> onStarlingContext <-----");
}
private function onStarlingRoot(event:starling.events.Event):void {
trace(this, "onStarlingRoot");
}
private function onStarlingFatal(event:starling.events.Event):void {
trace(this, "onStarlingFatal");
}
private function onStarlingRender(event:starling.events.Event):void {
// trace(this, "onStarlingRender");
}
}
}
package {
import feathers.controls.ImageLoader;
import feathers.media.VideoPlayer;
import starling.display.Sprite;
import starling.events.Event;
public class StarlingContainer extends Sprite {
private var player:VideoPlayer;
private var loader:ImageLoader;
public function StarlingContainer() {
trace(this, "StarlingContainer");
addEventListener(Event.ADDED_TO_STAGE, initStage);
}
private function initStage(event:Event):void {
trace(this, "initStage");
removeEventListener(Event.ADDED_TO_STAGE, initStage);
init();
}
private function init():void {
trace(this, "init");
loader = new ImageLoader();
player = new VideoPlayer();
player.addChild(loader);
player.setSize(320, 300);
player.addEventListener(Event.READY, onVideoPlayerReady);
player.videoSource = "assets/business_phrase.m4v";
addChild(player);
}
private function onVideoPlayerReady(event:Event):void {
trace(this, "onVideoPlayerReady");
loader.source = player.texture;
}
}
}