android: refactor music/sounds and fix trying to use invalid music resource
authorAlexis Laferrière <alexis.laf@xymus.net>
Wed, 18 Oct 2017 15:04:56 +0000 (11:04 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Sat, 16 Dec 2017 17:09:57 +0000 (12:09 -0500)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/android/audio.nit

index 19fac5a..3b13050 100644 (file)
@@ -542,9 +542,16 @@ redef class Sound
 
        redef fun load do
                if is_loaded then return
-               var retval_resources = app.default_soundpool.load_name_rid(app.resource_manager, app.native_activity, path.strip_extension)
-               if retval_resources == -1 then
-                       self.error = new Error("Failed to load " + path)
+
+               # Try resources (res)
+               var rid = app.default_soundpool.load_name_rid(app.resource_manager, app.native_activity, path.strip_extension)
+               if rid > 0 then
+                       self.soundpool_id = rid
+                       self.soundpool = app.default_soundpool
+                       self.error = null
+                       self.soundpool.error = null
+               else
+                       # Try assets
                        var nam = app.asset_manager.open_fd(path)
                        if nam.is_java_null then
                                self.error = new Error("Failed to get file descriptor for " + path)
@@ -559,11 +566,6 @@ redef class Sound
                                        self.soundpool.error = null
                                end
                        end
-               else
-                       self.soundpool_id = retval_resources
-                       self.soundpool = app.default_soundpool
-                       self.error = null
-                       self.soundpool.error = null
                end
                is_loaded = true
 
@@ -611,9 +613,19 @@ redef class Music
 
        redef fun load do
                if is_loaded then return
-               var mp_sound_resources = app.default_mediaplayer.load_sound(app.resource_manager.raw_id(path.strip_extension), app.native_activity)
-               if mp_sound_resources.error != null then
+
+               # Try resources (res)
+               var rid = app.resource_manager.raw_id(path.strip_extension)
+               if rid > 0 then
+                       var mp_sound_resources = app.default_mediaplayer.load_sound(rid, app.native_activity)
+                       if mp_sound_resources.error != null then
+                               self.media_player = app.default_mediaplayer
+                               self.error = null
+                               self.media_player.error = null
+                       end
                        self.error = mp_sound_resources.error
+               else
+                       # Try assets
                        var nam = app.asset_manager.open_fd(path)
                        if nam.is_java_null then
                                self.error = new Error("Failed to get file descriptor for " + path)
@@ -627,10 +639,6 @@ redef class Music
                                        self.media_player.error = null
                                end
                        end
-               else
-                       self.media_player = app.default_mediaplayer
-                       self.error = null
-                       self.media_player.error = null
                end
                is_loaded = true