+ if error != null then
+ self.error = error
+ else
+ self.is_loaded = true
+ end
+ end
+
+ 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)
+ 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)
+ else
+ var retval_assets = app.default_soundpool.load_asset_fd_rid(nam)
+ if retval_assets == -1 then
+ self.error = new Error("Failed to load " + path)
+ else
+ self.soundpool_id = retval_assets
+ self.soundpool = app.default_soundpool
+ self.error = null
+ 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
+
+ var error = error
+ if error != null then print_error error
+ end
+
+ redef fun play do
+ if not is_loaded then load
+ if self.error != null then return
+ soundpool.play(soundpool_id)
+ end
+
+ redef fun pause do
+ if self.error != null or not self.is_loaded then return
+ soundpool.pause_stream(soundpool_id)
+ paused = true
+ end
+
+ redef fun resume do
+ if self.error != null or not self.is_loaded then return
+ soundpool.resume(soundpool_id)
+ paused = false