diff -Nru openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/debian/changelog openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/debian/changelog --- openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/debian/changelog 2019-03-21 05:01:26.000000000 +0000 +++ openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/debian/changelog 2019-03-21 08:12:25.000000000 +0000 @@ -1,8 +1,8 @@ -openshot-qt (2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1) cosmic; urgency=low +openshot-qt (2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1) cosmic; urgency=low * Auto build. - -- Jonathan Thomas Thu, 21 Mar 2019 05:01:26 +0000 + -- OpenShot Code Thu, 21 Mar 2019 08:12:25 +0000 openshot-qt (2.4.4-1) UNRELEASED; urgency=medium diff -Nru openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/debian/git-build-recipe.manifest openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/debian/git-build-recipe.manifest --- openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/debian/git-build-recipe.manifest 2019-03-21 05:01:26.000000000 +0000 +++ openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/debian/git-build-recipe.manifest 2019-03-21 08:12:25.000000000 +0000 @@ -1,3 +1,3 @@ -# git-build-recipe format 0.4 deb-version {debupstream}+dfsg2+1038+201903210501 -lp:openshot git-commit:51f69329dce002c3ee33d878be996e1314617a1d -nest-part packaging lp:openshot-packaging openshot-qt/debian debian git-commit:d0170a8743bd35e501d8d6d7a199363e9ea75676 +# git-build-recipe format 0.4 deb-version {debupstream}+dfsg2+1039+201903210812 +lp:openshot git-commit:e8d5d2a7e76b167f02b6b0e19aa6eb355a2ed8e9 +nest-part packaging lp:openshot-packaging openshot-qt/debian debian git-commit:af8803c31f6b97423213973835e216d6c9260139 diff -Nru openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/.gitlab-ci.yml openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/.gitlab-ci.yml --- openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/.gitlab-ci.yml 2019-03-21 05:01:24.000000000 +0000 +++ openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/.gitlab-ci.yml 2019-03-21 08:12:21.000000000 +0000 @@ -8,6 +8,7 @@ paths: - build/*.AppImage - build/*.torrent + - build/install-x64/share/ script: - "curl -O -J -L --header PRIVATE-TOKEN:$ACCESS_TOKEN http://gitlab.openshot.org/OpenShot/libopenshot/-/jobs/artifacts/$CI_COMMIT_REF_NAME/download?job=linux-builder" - if [ ! -f artifacts.zip ]; then @@ -33,6 +34,7 @@ paths: - build/*.dmg - build/*.torrent + - build/install-x64/share/ script: - "curl -O -J -L --header PRIVATE-TOKEN:$ACCESS_TOKEN http://gitlab.openshot.org/OpenShot/libopenshot/-/jobs/artifacts/$CI_COMMIT_REF_NAME/download?job=mac-builder" - if [ ! -f artifacts.zip ]; then @@ -64,51 +66,54 @@ tags: - mac -windows-builder-x86: +windows-builder-x64: stage: build-openshot-qt artifacts: expire_in: 4 weeks paths: - build\*.exe - build\*.torrent + - build\install-x64\share\ script: - - try { Invoke-WebRequest -Uri "http://gitlab.openshot.org/OpenShot/libopenshot/-/jobs/artifacts/$CI_COMMIT_REF_NAME/download?job=windows-builder-x86" -Headers @{"PRIVATE-TOKEN"="$ACCESS_TOKEN"} -OutFile "artifacts.zip" } catch { $_.Exception.Response.StatusCode.Value__ } - - if (-not (Test-Path "artifacts.zip")) { Invoke-WebRequest -Uri "http://gitlab.openshot.org/OpenShot/libopenshot/-/jobs/artifacts/develop/download?job=windows-builder-x86" -Headers @{"PRIVATE-TOKEN"="$ACCESS_TOKEN"} -OutFile "artifacts.zip" } + - try { Invoke-WebRequest -Uri "http://gitlab.openshot.org/OpenShot/libopenshot/-/jobs/artifacts/$CI_COMMIT_REF_NAME/download?job=windows-builder-x64" -Headers @{"PRIVATE-TOKEN"="$ACCESS_TOKEN"} -OutFile "artifacts.zip" } catch { $_.Exception.Response.StatusCode.Value__ } + - if (-not (Test-Path "artifacts.zip")) { Invoke-WebRequest -Uri "http://gitlab.openshot.org/OpenShot/libopenshot/-/jobs/artifacts/develop/download?job=windows-builder-x64" -Headers @{"PRIVATE-TOKEN"="$ACCESS_TOKEN"} -OutFile "artifacts.zip" } - Expand-Archive -Path artifacts.zip -DestinationPath . - - Copy-Item "$CI_PROJECT_DIR/build/install-x86/python/*" -Destination "$CI_PROJECT_DIR" - - $env:Path = "$CI_PROJECT_DIR\build\install-x86\lib;C:\msys32\mingw32\bin;C:\msys32\mingw32\lib;C:\msys32\usr\lib\cmake\UnitTest++;C:\msys32\home\jonathan\depot_tools;C:\msys32\usr;C:\msys32\usr\lib;" + $env:Path; - - New-Item -path "build/install-x86/share/" -Name "$CI_PROJECT_NAME" -Value "CI_PROJECT_NAME:$CI_PROJECT_NAME`nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME`nCI_COMMIT_SHA:$CI_COMMIT_SHA`nCI_JOB_ID:$CI_JOB_ID" -ItemType file -force + - Copy-Item "$CI_PROJECT_DIR/build/install-x64/python/*" -Destination "$CI_PROJECT_DIR" + - $env:Path = "$CI_PROJECT_DIR\build\install-x64\lib;C:\msys64\mingw64\bin;C:\msys64\mingw64\lib;C:\msys64\usr\lib\cmake\UnitTest++;C:\msys64\home\jonathan\depot_tools;C:\msys64\usr;C:\msys64\usr\lib;" + $env:Path; + - New-Item -path "build/install-x64/share/" -Name "$CI_PROJECT_NAME" -Value "CI_PROJECT_NAME:$CI_PROJECT_NAME`nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME`nCI_COMMIT_SHA:$CI_COMMIT_SHA`nCI_JOB_ID:$CI_JOB_ID" -ItemType file -force - $PREV_GIT_LABEL=(git describe --tags --abbrev=0) - - git log "$PREV_GIT_LABEL..HEAD" --oneline --pretty=format:"%C(auto,yellow)%h%C(auto,magenta)% %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(25,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D" --date=short > "build/install-x86/share/$CI_PROJECT_NAME.log" + - git log "$PREV_GIT_LABEL..HEAD" --oneline --pretty=format:"%C(auto,yellow)%h%C(auto,magenta)% %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(25,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D" --date=short > "build/install-x64/share/$CI_PROJECT_NAME.log" - python3 freeze.py build - - editbin /LARGEADDRESSAWARE "$CI_PROJECT_DIR\build\exe.mingw-3.6\launch.exe" - - python3 installer/build-server.py "$SLACK_TOKEN" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" "$WINDOWS_KEY" "$WINDOWS_PASSWORD" "$GITHUB_USER" "$GITHUB_PASS" "True" "$CI_COMMIT_REF_NAME" + - python3 installer/build-server.py "$SLACK_TOKEN" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" "$WINDOWS_KEY" "$WINDOWS_PASSWORD" "$GITHUB_USER" "$GITHUB_PASS" "False" "$CI_COMMIT_REF_NAME" when: always except: - tags tags: - windows -windows-builder-x64: +windows-builder-x86: stage: build-openshot-qt artifacts: expire_in: 4 weeks paths: - build\*.exe - build\*.torrent + - build\install-x86\share\ script: - - try { Invoke-WebRequest -Uri "http://gitlab.openshot.org/OpenShot/libopenshot/-/jobs/artifacts/$CI_COMMIT_REF_NAME/download?job=windows-builder-x64" -Headers @{"PRIVATE-TOKEN"="$ACCESS_TOKEN"} -OutFile "artifacts.zip" } catch { $_.Exception.Response.StatusCode.Value__ } - - if (-not (Test-Path "artifacts.zip")) { Invoke-WebRequest -Uri "http://gitlab.openshot.org/OpenShot/libopenshot/-/jobs/artifacts/develop/download?job=windows-builder-x64" -Headers @{"PRIVATE-TOKEN"="$ACCESS_TOKEN"} -OutFile "artifacts.zip" } + - try { Invoke-WebRequest -Uri "http://gitlab.openshot.org/OpenShot/libopenshot/-/jobs/artifacts/$CI_COMMIT_REF_NAME/download?job=windows-builder-x86" -Headers @{"PRIVATE-TOKEN"="$ACCESS_TOKEN"} -OutFile "artifacts.zip" } catch { $_.Exception.Response.StatusCode.Value__ } + - if (-not (Test-Path "artifacts.zip")) { Invoke-WebRequest -Uri "http://gitlab.openshot.org/OpenShot/libopenshot/-/jobs/artifacts/develop/download?job=windows-builder-x86" -Headers @{"PRIVATE-TOKEN"="$ACCESS_TOKEN"} -OutFile "artifacts.zip" } - Expand-Archive -Path artifacts.zip -DestinationPath . - - Copy-Item "$CI_PROJECT_DIR/build/install-x64/python/*" -Destination "$CI_PROJECT_DIR" - - $env:Path = "$CI_PROJECT_DIR\build\install-x64\lib;C:\msys64\mingw64\bin;C:\msys64\mingw64\lib;C:\msys64\usr\lib\cmake\UnitTest++;C:\msys64\home\jonathan\depot_tools;C:\msys64\usr;C:\msys64\usr\lib;" + $env:Path; - - New-Item -path "build/install-x64/share/" -Name "$CI_PROJECT_NAME" -Value "CI_PROJECT_NAME:$CI_PROJECT_NAME`nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME`nCI_COMMIT_SHA:$CI_COMMIT_SHA`nCI_JOB_ID:$CI_JOB_ID" -ItemType file -force + - Copy-Item "$CI_PROJECT_DIR/build/install-x86/python/*" -Destination "$CI_PROJECT_DIR" + - $env:Path = "$CI_PROJECT_DIR\build\install-x86\lib;C:\msys32\mingw32\bin;C:\msys32\mingw32\lib;C:\msys32\usr\lib\cmake\UnitTest++;C:\msys32\home\jonathan\depot_tools;C:\msys32\usr;C:\msys32\usr\lib;" + $env:Path; + - New-Item -path "build/install-x86/share/" -Name "$CI_PROJECT_NAME" -Value "CI_PROJECT_NAME:$CI_PROJECT_NAME`nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME`nCI_COMMIT_SHA:$CI_COMMIT_SHA`nCI_JOB_ID:$CI_JOB_ID" -ItemType file -force - $PREV_GIT_LABEL=(git describe --tags --abbrev=0) - - git log "$PREV_GIT_LABEL..HEAD" --oneline --pretty=format:"%C(auto,yellow)%h%C(auto,magenta)% %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(25,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D" --date=short > "build/install-x64/share/$CI_PROJECT_NAME.log" + - git log "$PREV_GIT_LABEL..HEAD" --oneline --pretty=format:"%C(auto,yellow)%h%C(auto,magenta)% %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(25,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D" --date=short > "build/install-x86/share/$CI_PROJECT_NAME.log" - python3 freeze.py build - - python3 installer/build-server.py "$SLACK_TOKEN" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" "$WINDOWS_KEY" "$WINDOWS_PASSWORD" "$GITHUB_USER" "$GITHUB_PASS" "False" "$CI_COMMIT_REF_NAME" + - editbin /LARGEADDRESSAWARE "$CI_PROJECT_DIR\build\exe.mingw-3.6\launch.exe" + - python3 installer/build-server.py "$SLACK_TOKEN" "$S3_ACCESS_KEY" "$S3_SECRET_KEY" "$WINDOWS_KEY" "$WINDOWS_PASSWORD" "$GITHUB_USER" "$GITHUB_PASS" "True" "$CI_COMMIT_REF_NAME" when: always except: - tags tags: - windows + diff -Nru openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/installer/build-server.py openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/installer/build-server.py --- openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/installer/build-server.py 2019-03-21 05:01:24.000000000 +0000 +++ openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/installer/build-server.py 2019-03-21 08:12:21.000000000 +0000 @@ -257,7 +257,7 @@ openshot_qt_git_desc = "%s-%s-%s" % (openshot_qt_git_desc, version_info.get('libopenshot').get('CI_COMMIT_SHA')[:8], version_info.get('libopenshot-audio').get('CI_COMMIT_SHA')[:8]) # Get daily git_release object github_release = get_release(repo, "daily") - elif git_branch_name == "release": + elif git_branch_name.startswith("release"): # Get daily git_release object openshot_qt_git_desc = "OpenShot-v%s-release-candidate-%d" % (info.VERSION, int(time.time())) github_release = get_release(repo, "daily") diff -Nru openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/installer/prune_daily_builds.py openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/installer/prune_daily_builds.py --- openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/installer/prune_daily_builds.py 1970-01-01 00:00:00.000000000 +0000 +++ openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/installer/prune_daily_builds.py 2019-03-21 08:12:21.000000000 +0000 @@ -0,0 +1,86 @@ +""" + @file + @brief Remove older daily builds from GitHub (so our daily repo doesn't become huge) + @author Jonathan Thomas + + @section LICENSE + + Copyright (c) 2008-2016 OpenShot Studios, LLC + (http://www.openshotstudios.com). This file is part of + OpenShot Video Editor (http://www.openshot.org), an open-source project + dedicated to delivering high quality video editing and animation solutions + to the world. + + OpenShot Video Editor is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenShot Video Editor is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OpenShot Library. If not, see . + """ + +import sys +from github3 import login +import datetime +import pytz +import time + + +# Should we actually delete old assets? +SHOULD_DELETE = True +DELETE_DELAY = 0.5 +MAXIMUM_ASSET_AGE_DAYS = 180 + +# Calculate current date (with timezone) +utc=pytz.UTC +now = utc.localize(datetime.datetime.now()) + + +def get_release(repo, tag_name): + """Fetch the GitHub release tagged with the given tag and return it + @param repo: github3 repository object + @returns: github3 release object or None + """ + for release in repo.iter_releases(): + if release.tag_name == tag_name: + return release + + +if len(sys.argv) >= 3: + github_user = sys.argv[1] + github_pass = sys.argv[2] + + # Login and get "GitHub" object + gh = login(github_user, github_pass) + repo = gh.repository("OpenShot", "openshot-qt") + + # Get daily git_release object + github_release = get_release(repo, "daily") + + # Loop through all assets (for daily release) + delete_count = 0 + skip_count = 0 + for asset in github_release.assets: + asset_age = now - asset.updated_at + if asset_age.days > MAXIMUM_ASSET_AGE_DAYS: + delete_count += 1 + + if SHOULD_DELETE: + # Wait for a small delay so we don't get blocked from GitHub API + time.sleep(DELETE_DELAY) + + # Delete the old asset + print(" - Delete %s (%s days old)" % (asset.name, asset_age.days)) + asset._delete(asset._api) + else: + skip_count += 1 + + print("------------------") + print("Deleted %s Assets" % delete_count) + print("Skipped %s Assets" % skip_count) \ No newline at end of file diff -Nru openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/src/classes/info.py openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/src/classes/info.py --- openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/src/classes/info.py 2019-03-21 05:01:24.000000000 +0000 +++ openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/src/classes/info.py 2019-03-21 08:12:21.000000000 +0000 @@ -29,9 +29,9 @@ from PyQt5.QtCore import QDir -VERSION = "2.4.3-dev3" -MINIMUM_LIBOPENSHOT_VERSION = "0.2.2" -DATE = "20180922000000" +VERSION = "2.4.4" +MINIMUM_LIBOPENSHOT_VERSION = "0.2.3" +DATE = "20190315000000" NAME = "openshot-qt" PRODUCT_NAME = "OpenShot Video Editor" GPL_VERSION = "3" diff -Nru openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/src/classes/json_data.py openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/src/classes/json_data.py --- openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/src/classes/json_data.py 2019-03-21 05:01:24.000000000 +0000 +++ openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/src/classes/json_data.py 2019-03-21 08:12:21.000000000 +0000 @@ -147,7 +147,7 @@ def write_to_file(self, file_path, data, path_mode="ignore", previous_path=None): """ Save JSON settings to a file """ try: - contents = json.dumps(data, indent=4, sort_keys=True) + contents = json.dumps(data, indent=4) if path_mode == "relative": # Convert any paths to relative contents = self.convert_paths_to_relative(file_path, previous_path, contents) diff -Nru openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/src/timeline/js/functions.js openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/src/timeline/js/functions.js --- openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/src/timeline/js/functions.js 2019-03-21 05:01:25.000000000 +0000 +++ openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/src/timeline/js/functions.js 2019-03-21 08:12:21.000000000 +0000 @@ -59,7 +59,7 @@ // Determine start and stop samples var samples_per_second = 20; var block_width = 2; // 2 pixel wide blocks as smallest size - var start_sample = clip.start * samples_per_second; + var start_sample = Math.round(clip.start * samples_per_second); var end_sample = clip.end * samples_per_second; // Determine divisor for zoom scale @@ -92,11 +92,11 @@ ctx.stroke(); - var sample = 0, + var sample = 0.0, // Variables for accumulation - avg = 0, + avg = 0.0, avg_cnt = 0, - max = 0, + max = 0.0, last_x = 0; // Go through all of the (reduced) samples @@ -106,14 +106,14 @@ sample = Math.abs(clip.audio_data[i]); // X-Position of *next* sample x = Math.floor((i + 1 - start_sample) / sample_divisor); - + avg += sample; avg_cnt++; max = Math.max(max, sample); if(x >= last_x + block_width || i == end_sample-1){ // Block wide enough or last block -> draw it - + // Draw the slightly transparent max-bar ctx.fillStyle = color_transp; ctx.fillRect(last_x, mid_point, x-last_x, -(max * scale)); diff -Nru openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/src/windows/views/timeline_webview.py openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/src/windows/views/timeline_webview.py --- openshot-qt-2.4.4+dfsg2+1038+201903210501~ubuntu18.10.1/src/windows/views/timeline_webview.py 2019-03-21 05:01:25.000000000 +0000 +++ openshot-qt-2.4.4+dfsg2+1039+201903210812~ubuntu18.10.1/src/windows/views/timeline_webview.py 2019-03-21 08:12:22.000000000 +0000 @@ -921,6 +921,9 @@ # Convert waveform data to JSON serialized_audio_data = json.dumps(audio_data) + # Set waveform cache (with clip_id as key) + self.waveform_cache[clip_id] = serialized_audio_data + # Pass to javascript timeline (and render) cmd = JS_SCOPE_SELECTOR + ".setAudioData('" + clip_id + "', " + serialized_audio_data + ");" self.page().mainFrame().evaluateJavaScript(cmd) @@ -1790,7 +1793,7 @@ continue # Determine if waveform needs to be redrawn - has_audio_data = bool(self.eval_js(JS_SCOPE_SELECTOR + ".hasAudioData('" + clip_id + "');")) + has_audio_data = clip_id in self.waveform_cache if action == MENU_SLICE_KEEP_LEFT or action == MENU_SLICE_KEEP_BOTH: # Get details of original clip @@ -1826,10 +1829,6 @@ right_clip.data.pop('id') right_clip.key.pop(1) - # Get details of original clip - position_of_clip = float(right_clip.data["position"]) - start_of_clip = float(right_clip.data["start"]) - # Set new 'start' of right_clip (need to bump 1 frame duration more, so we don't repeat a frame) right_clip.data["position"] = (round(float(playhead_position) * fps_float) + 1) / fps_float right_clip.data["start"] = (round(float(clip.data["end"]) * fps_float) + 2) / fps_float @@ -1844,18 +1843,18 @@ self.update_clip_data(right_clip.data, only_basic_props=False, ignore_reader=True) if has_audio_data: - # Re-generate waveform since volume curve has changed - log.info("Generate right splice waveform for clip id: %s" % right_clip.id) - self.Show_Waveform_Triggered(right_clip.id) + # Add right clip audio to cache + self.waveform_cache[right_clip.id] = self.waveform_cache.get(clip_id, '[]') + + # Pass audio to javascript timeline (and render) + cmd = JS_SCOPE_SELECTOR + ".setAudioData('" + right_clip.id + "', " + self.waveform_cache.get(right_clip.id) + ");" + self.page().mainFrame().evaluateJavaScript(cmd) # Save changes self.update_clip_data(clip.data, only_basic_props=False, ignore_reader=True) - if has_audio_data: - # Re-generate waveform since volume curve has changed - log.info("Generate left splice waveform for clip id: %s" % clip.id) - self.Show_Waveform_Triggered(clip.id) - + # Start timer to redraw audio waveforms + self.redraw_audio_timer.start() # Loop through each transition (using the list of ids) for trans_id in trans_ids: @@ -2987,6 +2986,9 @@ # Connect waveform generation signal get_app().window.WaveformReady.connect(self.Waveform_Ready) + # Local audio waveform cache + self.waveform_cache = {} + # Connect update thumbnail signal get_app().window.ThumbnailUpdated.connect(self.Thumbnail_Updated)