|
@@ -45,7 +45,7 @@ namespace PpubViewer.DocumentView {
|
|
|
box.append (clamp);
|
|
|
}
|
|
|
|
|
|
- public override void load_asset (Ppub.Publication publication, Ppub.Asset asset) {
|
|
|
+ public override async void load_asset (Ppub.Publication publication, Ppub.Asset asset) {
|
|
|
this.publication = publication;
|
|
|
video_stack.visible_child = spinner;
|
|
|
|
|
@@ -55,35 +55,27 @@ namespace PpubViewer.DocumentView {
|
|
|
ratio_frac = ppvm.ratio[1] / ppvm.ratio[0];
|
|
|
|
|
|
var description_asset = publication.get_asset (ppvm.description_file_name);
|
|
|
- base.load_asset (publication, description_asset);
|
|
|
+ yield base.load_asset (publication, description_asset);
|
|
|
|
|
|
new Thread<void>("ppvm_video_extractor", () => prepare_stream(ppvm.streams.first()));
|
|
|
}
|
|
|
|
|
|
- private void prepare_stream(Ppub.VideoDescription video) throws Error {
|
|
|
+ private async void prepare_stream(Ppub.VideoDescription video_desc) throws Error {
|
|
|
|
|
|
cleanup();
|
|
|
|
|
|
- var s = publication.read_asset(ppvm.streams.first().file_name);
|
|
|
+ var s = publication.read_asset(video_desc.file_name);
|
|
|
FileIOStream fios;
|
|
|
temp = File.new_tmp("ppub_ppvm_tmp_video_XXXXXX", out fios);
|
|
|
|
|
|
- fios.output_stream.splice(s, OutputStreamSpliceFlags.CLOSE_SOURCE | OutputStreamSpliceFlags.CLOSE_TARGET);
|
|
|
-
|
|
|
- GLib.Idle.add(video_ready);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- private bool video_ready() {
|
|
|
+ yield fios.output_stream.splice_async(s, OutputStreamSpliceFlags.CLOSE_SOURCE | OutputStreamSpliceFlags.CLOSE_TARGET);
|
|
|
|
|
|
var mf = MediaFile.for_file (temp);
|
|
|
video.set_media_stream(mf);
|
|
|
video_stack.visible_child = video;
|
|
|
|
|
|
- return false;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
public override void reflow() {
|
|
|
var video_height = video_stack.get_width () * ratio_frac;
|
|
|
video_stack.height_request = (int)video_height;
|