Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
cbdbdb6
app: replace SCORE_SPLASH_SCREEN ifdef with runtime m_startScreen check
jcelerier May 4, 2026
8b9d269
core: defensive null-check on m_recentFiles in save paths
jcelerier May 4, 2026
6094735
scenario: drop on cable: relink ports by name when replacing a node
jcelerier May 4, 2026
fd73ff5
3rdparty: add ufbx submodule
jcelerier May 4, 2026
80fedea
3rdparty: add fastgltf submodule
jcelerier May 4, 2026
8c9909c
3rdparty: add OffsetAllocator submodule
jcelerier May 4, 2026
3c019aa
isf: TEX_DIMENSIONS_3D / IMG_SIZE_3D aliases for 3D samplers
jcelerier May 4, 2026
0d41463
isf: point3d_input AS_COLOR flag for color-swatch display
jcelerier May 4, 2026
e792fe4
isf: parse-time warning on unknown csf_image_input FORMAT
jcelerier May 4, 2026
df187fb
isf: parser rework — top-level descriptors, uniform inputs, geometry …
jcelerier May 4, 2026
7860892
gfx: add AssetTable + TextureLoader for shared decoded-asset cache
jcelerier May 4, 2026
f523ff1
gfx: add GpuResourceRegistry — slab-allocated GPU arenas backed by Of…
jcelerier May 4, 2026
d27b28d
gfx: add CameraMath / GpuTiming / VertexFallback helpers
jcelerier May 4, 2026
71ea102
gfx: add IsfBindingsBuilder + PipelineStateHelpers
jcelerier May 4, 2026
fbd0418
gfx: add SceneGPUState — FlatScene + scene packer
jcelerier May 4, 2026
17a26f7
gfx: add OffscreenDevice + RhiPreviewWidget + Metal buffer-copy backend
jcelerier May 4, 2026
f3e7151
gfx: extend ISF / SimpleRenderedISF nodes for new ISF features
jcelerier May 4, 2026
c3b1cf2
csf: rework for scene-aware compute pipeline
jcelerier May 4, 2026
b5a7003
gfx: rework raw raster pipeline (MRT, AUXILIARY, EXECUTION_MODEL) and…
jcelerier May 4, 2026
edd3c05
gfx: refresh shared graph plumbing for incremental scene pipeline
jcelerier May 4, 2026
c138bff
gfx: add ScenePreprocessorNode — scene_spec to flat draws + arena upl…
jcelerier May 4, 2026
a9dc223
gfx: add SceneFilterNode + FlattenedSceneFilterNode + MergeGeometries…
jcelerier May 4, 2026
00f48ec
avnd: split CpuFilter / CpuAnalysis lifecycle into init / initState /…
jcelerier May 4, 2026
b9c9959
avnd: add scene_port concept
jcelerier May 4, 2026
ba92dcb
avnd: split GpuNode lifecycle and add scene_port storage helpers
jcelerier May 4, 2026
1937216
gfx: extend ShaderProgram for new ISF features
jcelerier May 4, 2026
b28a7aa
gfx: refresh Filter / GeometryFilter / TexturePort for new pipeline
jcelerier May 4, 2026
6ec0e90
gfx: refresh WindowDevice / Spout / Syphon / WindowCapture
jcelerier May 4, 2026
a1ec54a
gfx: refresh GfxContext + window / screen / multiwindow nodes for inc…
jcelerier May 4, 2026
938c45f
threedim: refresh primitives, buffer/geometry helpers; rename ObjLoad…
jcelerier May 4, 2026
8a7515f
threedim: add unified AssetLoader on top of FbxParser / GltfParser
jcelerier May 4, 2026
1c86ef8
threedim: add Camera, CameraArray, CameraSwitch, Light, Transform3D
jcelerier May 4, 2026
bc15cbc
threedim: add ScenePreprocessor (replaces SceneFlattener)
jcelerier May 4, 2026
9c0e75b
threedim: add SceneFilter + FlattenedSceneFilter + MergeGeometries
jcelerier May 4, 2026
f26194a
threedim: add SceneGraphFilter + SceneSwitch + SceneSelector + SceneG…
jcelerier May 4, 2026
77020ee
threedim: add SceneDuplicator + SceneFromMeshes + SceneInspector + Cr…
jcelerier May 4, 2026
0439994
threedim: add InjectBuffer + InjectTexture for live scene-resource in…
jcelerier May 4, 2026
0f3b353
threedim: add PBRMesh + MaterialOverride + ConfigurePrimitive + Insta…
jcelerier May 4, 2026
9122855
threedim: add EnvironmentLoader + improve CubemapLoader / CubemapComp…
jcelerier May 4, 2026
a2a4718
threedim: add AnimationPlayer + Humanoid retargeting + InverseKinematics
jcelerier May 4, 2026
4ee4c3d
threedim: add TextToMesh + TextToTexture
jcelerier May 4, 2026
7f2dcde
threedim: add ExtractBuffer2 + ExtractSceneBuffer + ExtractTexture
jcelerier May 4, 2026
b664933
threedim: refresh ModelDisplay + RenderPipeline + Splat for scene pip…
jcelerier May 4, 2026
fa67296
js: gpu node lifecycle rework with deterministic teardown
jcelerier May 4, 2026
5bf4968
wip: many bugfixes across the board
jcelerier May 14, 2026
950d02c
build: more build fixes
jcelerier May 14, 2026
49f41fc
addons: allow to clone with a ref
jcelerier May 14, 2026
ba99e42
ci: fix bash issue with eux
jcelerier May 15, 2026
0a85df8
ci: fixes for older qt versions
jcelerier May 15, 2026
962f855
rhi: populate caps
jcelerier May 15, 2026
b0fb67a
ci: try windows fixes
jcelerier May 16, 2026
4d74d70
deps: add zstd dep everywhere
jcelerier May 16, 2026
af044d3
xcb: use EGL instead of GLX by default
jcelerier Jun 7, 2026
8a0a10a
desktop: enforce desktop GL (Qt may pick GLES when we use a EGL surface)
jcelerier Jun 7, 2026
9cf0bfd
gpu: try to land a generalized abstraction for interop & RDMA
jcelerier Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .github/workflows/win-builds.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ jobs:
fftw:p
ffmpeg:p
SDL2:p
zstd:p

- name: Build
shell: msys2 {0}
Expand Down
15 changes: 15 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,18 @@
[submodule "3rdparty/opengametools"]
path = 3rdparty/opengametools
url = https://github.com/jpaver/opengametools
[submodule "3rdparty/ufbx"]
path = 3rdparty/ufbx
url = https://github.com/ufbx/ufbx
[submodule "3rdparty/fastgltf"]
path = 3rdparty/fastgltf
url = https://github.com/spnda/fastgltf
[submodule "3rdparty/OffsetAllocator"]
path = 3rdparty/OffsetAllocator
url = https://github.com/sebbbi/OffsetAllocator
[submodule "3rdparty/spz"]
path = 3rdparty/spz
url = https://github.com/nianticlabs/spz
[submodule "3rdparty/zstd"]
path = 3rdparty/zstd
url = https://github.com/facebook/zstd
1 change: 1 addition & 0 deletions 3rdparty/3rdparty.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,4 @@ include(3rdparty/shmdata.cmake)
include(3rdparty/snappy.cmake)
include(3rdparty/sndfile.cmake)
include(3rdparty/xtensor.cmake)
include(3rdparty/zstd.cmake)
1 change: 1 addition & 0 deletions 3rdparty/OffsetAllocator
Submodule OffsetAllocator added at 3610a7
1 change: 1 addition & 0 deletions 3rdparty/fastgltf
Submodule fastgltf added at ce5218
1 change: 1 addition & 0 deletions 3rdparty/spz
Submodule spz added at 7ae162
1 change: 1 addition & 0 deletions 3rdparty/ufbx
Submodule ufbx added at 83bc7c
1 change: 1 addition & 0 deletions 3rdparty/zstd
Submodule zstd added at 885c79
34 changes: 34 additions & 0 deletions 3rdparty/zstd.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
if(SCORE_USE_SYSTEM_LIBRARIES)
find_package(zstd GLOBAL CONFIG)
endif()

if(NOT TARGET zstd::libzstd_static AND NOT TARGET zstd::libzstd_shared AND NOT TARGET zstd)
set(ZSTD_BUILD_PROGRAMS OFF CACHE INTERNAL "" FORCE)
set(ZSTD_BUILD_TESTS OFF CACHE INTERNAL "" FORCE)
set(ZSTD_BUILD_SHARED OFF CACHE INTERNAL "" FORCE)
set(ZSTD_BUILD_STATIC ON CACHE INTERNAL "" FORCE)
set(ZSTD_BUILD_DICTBUILDER OFF CACHE INTERNAL "" FORCE)

set(old_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
set(BUILD_SHARED_LIBS OFF)

if(NOT MSVC AND NOT CMAKE_CROSSCOMPILING)
if(CMAKE_BUILD_TYPE MATCHES ".*Deb.*")
set(old_CFLAGS "${CMAKE_C_FLAGS}")
set(old_CXXFLAGS "${CMAKE_CXX_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -march=native")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -march=native")
endif()
endif()

add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/zstd/build/cmake" EXCLUDE_FROM_ALL)

if(NOT MSVC AND NOT CMAKE_CROSSCOMPILING)
if(CMAKE_BUILD_TYPE MATCHES ".*Deb.*")
set(CMAKE_C_FLAGS "${old_CFLAGS}")
set(CMAKE_CXX_FLAGS "${old_CXXFLAGS}")
endif()
endif()

set(BUILD_SHARED_LIBS ${old_BUILD_SHARED_LIBS})
endif()
39 changes: 26 additions & 13 deletions ci/common.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,31 @@ cd src/addons

clone_addon() {
local url=${1}
local ref=${2:-}
local folder=$(echo "${url}" | awk -F'/' '{print $NF}')

(
if [[ ! -d "$folder" ]]; then
git clone --recursive -j16 "$url"
if [[ "x${ref}" != "x" ]]; then
(
cd "$folder"
git checkout "${ref}"
)
fi
else
# Try to update the submodule if it's really super clean
cd "$folder"
git update-index --really-refresh
if output=$(git status --porcelain --untracked-files=no) && [ -z "$output" ]; then
if output=$(git diff-index --quiet HEAD) && [ -z "$output" ]; then
git pull || true
if [[ "x${ref}" != "x" ]]; then
(
cd "$folder"
git checkout "${ref}"
)
fi
fi
fi
fi
Expand All @@ -33,20 +46,20 @@ CI_PLATFORM="${1:-DEFAULT}"

if [[ "$CI_PLATFORM" != "WASM" ]];
then
clone_addon https://github.com/ossia/score-addon-ltc
clone_addon https://github.com/ossia/score-addon-ndi
clone_addon https://github.com/bltzr/score-avnd-granola
clone_addon https://github.com/ossia/score-addon-ultraleap
clone_addon https://github.com/ossia/score-addon-ltc
clone_addon https://github.com/ossia/score-addon-ndi feature/ndi_output_updates
clone_addon https://github.com/bltzr/score-avnd-granola
clone_addon https://github.com/ossia/score-addon-ultraleap
clone_addon https://github.com/ossia/score-addon-contextfree
clone_addon https://github.com/ossia/score-addon-ble
# clone_addon https://github.com/ossia/score-addon-led
clone_addon https://github.com/ossia/score-addon-spatgris
clone_addon https://github.com/ossia/score-addon-hdf5
clone_addon https://github.com/ossia/score-addon-onnx
clone_addon https://github.com/ossia/score-addon-deuterium
clone_addon https://github.com/ossia/score-addon-airwindows
clone_addon https://github.com/ossia/score-addon-lsl
clone_addon https://github.com/jcelerier/bendage
clone_addon https://github.com/ossia/score-addon-ble
clone_addon https://github.com/ossia/score-addon-led feature/gfx_led_2
clone_addon https://github.com/ossia/score-addon-spatgris
clone_addon https://github.com/ossia/score-addon-hdf5
clone_addon https://github.com/ossia/score-addon-onnx
clone_addon https://github.com/ossia/score-addon-deuterium
clone_addon https://github.com/ossia/score-addon-airwindows
clone_addon https://github.com/ossia/score-addon-lsl
clone_addon https://github.com/jcelerier/bendage
fi

if [[ "$CI_PLATFORM" == "LINUX" || "$CI_PLATFORM" == "WIN32" ]]; then
Expand Down
3 changes: 2 additions & 1 deletion ci/debian.bookworm.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ $SUDO apt-get install -qq --force-yes \
libavahi-compat-libdnssd-dev libsamplerate0-dev \
portaudio19-dev \
libpipewire-0.3-dev \
libavcodec-dev libavdevice-dev libavutil-dev libavfilter-dev libavformat-dev libswresample-dev
libavcodec-dev libavdevice-dev libavutil-dev libavfilter-dev libavformat-dev libswresample-dev \
libzstd-dev

source ci/common.deps.sh LINUX
3 changes: 2 additions & 1 deletion ci/debian.bullseye.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ $SUDO apt-get install -qq --force-yes -t bullseye-backports \
libavahi-compat-libdnssd-dev libsamplerate0-dev \
portaudio19-dev \
libpipewire-0.3-dev \
libavcodec-dev libavdevice-dev libavutil-dev libavfilter-dev libavformat-dev libswresample-dev
libavcodec-dev libavdevice-dev libavutil-dev libavfilter-dev libavformat-dev libswresample-dev \
libzstd-dev

source ci/common.deps.sh LINUX
3 changes: 2 additions & 1 deletion ci/debian.trixie-system.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ $SUDO apt-get install -qq --force-yes \
libzita-alsa-pcmi-dev \
libvst3sdk-dev \
puredata-dev \
libpd-dev
libpd-dev \
libzstd-dev


source ci/common.deps.sh LINUX
3 changes: 2 additions & 1 deletion ci/debian.trixie.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ $SUDO apt-get install -qq --force-yes \
libavahi-compat-libdnssd-dev libsamplerate0-dev \
portaudio19-dev \
libpipewire-0.3-dev \
libavcodec-dev libavdevice-dev libavutil-dev libavfilter-dev libavformat-dev libswresample-dev
libavcodec-dev libavdevice-dev libavutil-dev libavfilter-dev libavformat-dev libswresample-dev \
libzstd-dev

source ci/common.deps.sh LINUX
3 changes: 2 additions & 1 deletion ci/fedora.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ dnf -y install --allowerasing \
qt6-qtsvg-devel \
qt6-qtconnectivity-devel \
pipewire-devel \
zlib-ng-compat-static zlib-ng-compat-devel
zlib-ng-compat-static zlib-ng-compat-devel \
libzstd-devel

source ci/common.deps.sh LINUX
3 changes: 2 additions & 1 deletion ci/freebsd.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ pkg install -y \
libcoap \
freetype2 harfbuzz fontconfig \
alsa-lib \
jackit
jackit \
zstd

source ci/common.deps.sh FREEBSD
1 change: 1 addition & 0 deletions ci/nix.build.nix
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
, suil
, udev
, xorg
, zstd
}:

# TODO: figure out LLVM jit
Expand Down
4 changes: 2 additions & 2 deletions ci/osx.brew.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ set +e

export HOMEBREW_NO_AUTO_UPDATE=1
brew update && (brew list cmake || brew install cmake)
brew install ninja qt boost ffmpeg@7 fftw portaudio jack sdl lv2 lilv suil freetype
brew install ninja qt boost ffmpeg@7 fftw portaudio jack sdl lv2 lilv suil freetype zstd
brew uninstall --ignore-dependencies qt@5 || true

source ci/common.deps.sh MACOS

echo PKG_CONFIG_PATH="/opt/homebrew/opt/ffmpeg@7/lib/pkgconfig" >> "$GITHUB_ENV"
echo PKG_CONFIG_PATH="/opt/homebrew/opt/ffmpeg@7/lib/pkgconfig" >> "$GITHUB_ENV"
3 changes: 2 additions & 1 deletion ci/suse.leap.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ $SUDO zypper -n install \
qt6-qml-devel qt6-qml-private-devel \
qt6-svg-devel \
ffmpeg-4-libavcodec-devel ffmpeg-4-libavdevice-devel ffmpeg-4-libavfilter-devel ffmpeg-4-libavformat-devel ffmpeg-4-libswresample-devel \
curl gzip
curl gzip \
libzstd-devel

curl -L -0 https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-linux-x86_64.tar.gz --output cmake.tgz
tar xaf cmake.tgz
Expand Down
3 changes: 2 additions & 1 deletion ci/suse.tumbleweed.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,6 @@ $SUDO zypper -n install \
qt6-qml-devel qt6-qml-private-devel \
qt6-svg-devel \
ffmpeg-7-libavcodec-devel ffmpeg-7-libavdevice-devel ffmpeg-7-libavfilter-devel ffmpeg-7-libavformat-devel ffmpeg-7-libswresample-devel \
zlib-devel zlib-devel-static
zlib-devel zlib-devel-static \
libzstd-devel

3 changes: 2 additions & 1 deletion ci/ubuntu.2604.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ $SUDO apt install -y \
libvulkan-dev \
libavcodec-dev libavdevice-dev libavutil-dev libavfilter-dev libavformat-dev libswresample-dev \
file \
dpkg-dev
dpkg-dev \
libzstd-dev


source ci/common.deps.sh LINUX
3 changes: 2 additions & 1 deletion ci/ubuntu.jammy.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ $SUDO apt-get install -y \
libvulkan-dev \
libavcodec-dev libavdevice-dev libavutil-dev libavfilter-dev libavformat-dev libswresample-dev \
file \
dpkg-dev
dpkg-dev \
libzstd-dev

source ci/common.deps.sh LINUX
3 changes: 2 additions & 1 deletion ci/ubuntu.lunar.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ $SUDO apt-get install -y \
libavcodec-dev libavdevice-dev libavutil-dev libavfilter-dev libavformat-dev libswresample-dev \
file \
dpkg-dev \
lsb-release
lsb-release \
libzstd-dev

source ci/common.deps.sh LINUX
3 changes: 2 additions & 1 deletion ci/ubuntu.noble.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ $SUDO apt-get install -y \
libavcodec-dev libavdevice-dev libavutil-dev libavfilter-dev libavformat-dev libswresample-dev \
file \
dpkg-dev \
lsb-release
lsb-release \
libzstd-dev

# needed because GCC does not support -fuse-ld=lld-19
$SUDO rm -rf /usr/bin/lld /usr/bin/ld.lld
Expand Down
3 changes: 2 additions & 1 deletion ci/ubuntu.oracular.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ $SUDO apt-get install -y \
libavcodec-dev libavdevice-dev libavutil-dev libavfilter-dev libavformat-dev libswresample-dev \
file \
dpkg-dev \
lsb-release
lsb-release \
libzstd-dev

source ci/common.deps.sh LINUX
3 changes: 2 additions & 1 deletion ci/ubuntu.plucky.deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ $SUDO apt-get install -y \
libavcodec-dev libavdevice-dev libavutil-dev libavfilter-dev libavformat-dev libswresample-dev \
file \
dpkg-dev \
lsb-release
lsb-release \
libzstd-dev

source ci/common.deps.sh LINUX
5 changes: 2 additions & 3 deletions src/app/Application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -559,9 +559,8 @@ void Application::initDocuments()
}
else
{
#if !defined(SCORE_SPLASH_SCREEN)
openNewDocument();
#endif
if(!m_startScreen)
openNewDocument();
}
}

Expand Down
7 changes: 7 additions & 0 deletions src/app/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,9 @@ static void setup_x11(int argc, char** argv)

helper_dylibs.run_under_x11 = true;
helper_dylibs.xwayland = wayland;

// EGL is the only way to get zero-copy with dma-buf import
qputenv("QT_XCB_GL_INTEGRATION", "xcb_egl");
}
}
};
Expand Down Expand Up @@ -499,6 +502,7 @@ static void setup_opengl(bool& enable_opengl_ui)

#ifndef QT_NO_OPENGL
#if (defined(__arm__) || defined(__aarch64__)) && !defined(_WIN32) && !defined(__APPLE__)
// Raspberry Pi & such
QSurfaceFormat fmt = QSurfaceFormat::defaultFormat();
fmt.setRenderableType(QSurfaceFormat::OpenGLES);
fmt.setSwapInterval(1);
Expand All @@ -514,6 +518,7 @@ static void setup_opengl(bool& enable_opengl_ui)
fmt.setDefaultFormat(fmt);
#else
{
// Desktop GL
std::vector<std::pair<int, int>> versions_to_test
= {{4, 6}, {4, 5}, {4, 4}, {4, 3}, {4, 2}, {4, 1}, {4, 0},
{3, 3}, {3, 2}, {3, 1}, {3, 0}, {2, 1}, {2, 0}};
Expand Down Expand Up @@ -552,7 +557,9 @@ static void setup_opengl(bool& enable_opengl_ui)

QSurfaceFormat fmt = QSurfaceFormat::defaultFormat();
fmt.setProfile(QSurfaceFormat::CoreProfile);
fmt.setRenderableType(QSurfaceFormat::OpenGL);
fmt.setSwapInterval(1);
fmt.setStencilBufferSize(8);
bool ok = false;
for(auto [maj, min] : versions_to_test)
{
Expand Down
12 changes: 8 additions & 4 deletions src/lib/core/presenter/DocumentManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -345,8 +345,10 @@ bool DocumentManager::saveDocument(Document& doc)

if(f.commit())
{
m_recentFiles->addRecentFile(savename);
saveRecentFilesState();
if(m_recentFiles) {
m_recentFiles->addRecentFile(savename);
saveRecentFilesState();
}
}
else
{
Expand Down Expand Up @@ -426,8 +428,10 @@ bool DocumentManager::saveDocumentAs(Document& doc, const QString& savename)

if(f.commit())
{
m_recentFiles->addRecentFile(savename);
saveRecentFilesState();
if(m_recentFiles) {
m_recentFiles->addRecentFile(savename);
saveRecentFilesState();
}
doc.backupManager()->updateBackupData();
return true;
}
Expand Down
Loading
Loading