Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
14191d7
Initial upgrade to Qt6
ksuprynowicz Sep 6, 2025
656074a
Initial work on upgrading QML to Qt6
ksuprynowicz Sep 6, 2025
61b529c
Get Qt6 compiling and running, get QML starting
ada-tv Sep 7, 2025
e1a04e3
Comment out enough QML to get the desktop starting, though framebuffe…
ada-tv Sep 7, 2025
e6e5b98
VrMenu fixes for Qt6, part 1
ksuprynowicz Sep 9, 2025
b55a5a4
VRMenu fixes for Qt6
ksuprynowicz Sep 14, 2025
16542b4
QQuickWebEngineView fixes for Qt6
ksuprynowicz Sep 14, 2025
a3dc300
Fix QML OpenGL contexts
ksuprynowicz Sep 19, 2025
936fca9
Fix a handful of Qt6 crashes, flow now works properly
ada-tv Sep 19, 2025
6a9497e
Metaobject-related fixes
ksuprynowicz Sep 27, 2025
f0c119c
Add a check for catching MOC-related invoke bug
ksuprynowicz Sep 27, 2025
c5f3de2
Remove glm::quat from scripting API
ksuprynowicz Sep 27, 2025
0d1fa42
Remove glm::vec3 from scripting API
ksuprynowicz Sep 27, 2025
4e4a0fc
Smaller script API types fixes for Qt6
ksuprynowicz Sep 27, 2025
9328529
Work around QVariant copy bug
ksuprynowicz Sep 28, 2025
fc39e24
More workarounds for MOC typedef bug
ksuprynowicz Sep 28, 2025
0cc3546
Fixed memory safety issue in ScriptObjectV8Proxy
ksuprynowicz Sep 30, 2025
25b4fc6
Re-enable QML rendering
ksuprynowicz Sep 30, 2025
82d5f3c
Qt6: QML render target now set up properly, QML web entities rendering
ada-tv Oct 1, 2025
d423aa5
Removed properties with missing font
ksuprynowicz Oct 1, 2025
3811ba6
Fixed glm::mat4 typedefs for MOC
ksuprynowicz Oct 1, 2025
7033af4
Qt6 QML fixes
ksuprynowicz Oct 2, 2025
2fab125
Re-enable desktop on Qt6
ksuprynowicz Oct 3, 2025
1af0fcb
Fix webengine UI crash
ksuprynowicz Oct 5, 2025
5598b1f
QML fixes for Qt 6
ksuprynowicz Oct 5, 2025
0bb5398
Workaround for broken window inputs
ksuprynowicz Oct 5, 2025
e513b4b
Re-enable FileDialog on Qt6
ksuprynowicz Oct 6, 2025
5432aac
Make file dialog show files on Qt6
ksuprynowicz Oct 7, 2025
121fb11
Fix Sampler.cpp for Qt6
ksuprynowicz Oct 13, 2025
4cf6d98
Memory safety fixes
ksuprynowicz Oct 14, 2025
b00bded
Fix most of compiler warnings on Qt6
ksuprynowicz Oct 15, 2025
9e605e5
Move Reource cache from QSharedPointer to std::shared_ptr
ksuprynowicz Oct 17, 2025
d200184
Fix issues with resource pointers
ksuprynowicz Oct 18, 2025
d35baa4
Resource shared_ptr fixes
ksuprynowicz Oct 20, 2025
77aa2c4
Resource pointer fixes
ksuprynowicz Oct 21, 2025
df4a9ab
Fixes for Resource Qt events after deleteLater()
ksuprynowicz Oct 24, 2025
b4e33b0
Fix voxels memory issue
ksuprynowicz Oct 24, 2025
9838daa
Temporary workaround for text entity fade crash
ksuprynowicz Oct 24, 2025
e57842b
Fix webentities on Qt6
ksuprynowicz Oct 24, 2025
ae71cba
Fix message dialogs and partially fix graphics settings
ada-tv Oct 9, 2025
87bd333
Use new callback syntax in TabletHome, workaround for Qt::TimerType e…
ada-tv Oct 13, 2025
d39414b
QNetworkReply signal fixes
ksuprynowicz Oct 25, 2025
573ee15
Fix vec4 in script engine
ksuprynowicz Oct 25, 2025
1b6d85f
Add experimental Qt 6.8.3 package.
JulianGro Oct 21, 2025
59fac44
Quazip is required for building.
JulianGro Oct 21, 2025
8baeb70
Update conanfile.py
JulianGro Oct 21, 2025
3dc78cb
Use shared fontconfig and freetype to avoid Qt linking issues.
JulianGro Oct 21, 2025
a53b97a
Enable with_dbus as it is required by Qt WebEngine.
JulianGro Oct 22, 2025
2b3cf56
Use shared NSS, as NSS' Conan recipe doesn't support static building …
JulianGro Oct 22, 2025
1bdeaef
Use shared NSPR, since NSS cannot link against static NSPR.
JulianGro Oct 22, 2025
b87b659
Avoid `undefined symbol` errors when building NSS.
JulianGro Oct 24, 2025
a07913e
Use upstream Qt package, since all current changes have been upstreamed.
JulianGro Oct 24, 2025
32706e5
Fix `libraries\shared\src\shared\platform\WinHelper.cpp(30,10): error…
RTUnreal Oct 25, 2025
b771b7b
Fix building against system Quazip.
JulianGro Oct 27, 2025
cbc6a10
Fix FBX support on Qt6
ksuprynowicz Oct 29, 2025
95c2b9c
Add new QML files
ada-tv Oct 26, 2025
cb5e065
Change window theme, new chat app, new settings app
ada-tv Oct 26, 2025
045baa2
Move keyboard and login screen into staging dir
ada-tv Oct 26, 2025
7d619bb
Fully functional running scripts dialog
ada-tv Oct 27, 2025
974b211
sed all of the tabs into 4-spaces (oops)
ada-tv Oct 27, 2025
4386b6a
Mostly-functional contacts app, easy profile picture setting
ada-tv Oct 27, 2025
921fbe7
Functional file picker
ada-tv Oct 27, 2025
4502230
Asset dialog opens, not functional yet
ada-tv Oct 27, 2025
01f379c
Kinda-functional asset browser
ada-tv Oct 29, 2025
c2153bd
Mostly-functional settings menu
ada-tv Oct 29, 2025
91b793e
Polish
ada-tv Oct 29, 2025
baa7617
moc macro typo
ada-tv Oct 30, 2025
e779ba3
Use and bundle Roboto instead of DejaVu Sans
ada-tv Oct 30, 2025
2ecdef9
Add the old settings menu items back as a fallback
ada-tv Oct 30, 2025
84198f2
fix removed qt5 headers
RTUnreal Nov 7, 2025
76b8574
fix incorrect initialization of array
RTUnreal Nov 7, 2025
a3cfe92
fix wrong typing?
RTUnreal Nov 7, 2025
7185dc4
fix debug only vars being used in non debug env
RTUnreal Nov 7, 2025
7143a2a
fix usage of not (yet) supported c++20 syntax
RTUnreal Oct 28, 2025
28e784f
fix windows gl.h not being initialized properly?
RTUnreal Nov 7, 2025
b33e9bc
fix file encoding issue
RTUnreal Oct 29, 2025
97d8496
fix some plugin errors
RTUnreal Oct 31, 2025
f7d713b
fix application event handler
RTUnreal Nov 7, 2025
8c983f0
fix correct debug output of ScriptException
RTUnreal Nov 7, 2025
ad73999
fix typing and implement more QDebug stuff
RTUnreal Nov 7, 2025
6383ecb
fix more errors
RTUnreal Nov 4, 2025
815e07e
Angle was removed from Qt6 for Windows.
JulianGro Nov 5, 2025
3d05afe
switch from `fromUint128` to default constructor
RTUnreal Nov 5, 2025
268a839
explicitly construct QByteArray
RTUnreal Nov 5, 2025
0328772
fix changed class name
RTUnreal Nov 7, 2025
02456f3
Fixed mouse movement issue on Qt6
ksuprynowicz Nov 8, 2025
b273c64
Fix mouse and touches on Web entities
ada-tv Nov 13, 2025
d0326ca
Use virtual pointer device on QML desktop
ada-tv Nov 13, 2025
818bcf1
Fix timestamps for offscreen UI
ksuprynowicz Nov 15, 2025
d6e4b62
Qt6 input events debugging and fixes
ksuprynowicz Nov 15, 2025
20cf557
Fix MOC issue with pointer scripting on Qt6
ksuprynowicz Nov 16, 2025
d25360d
Fix web entity inputs
ksuprynowicz Nov 29, 2025
24f496e
Post-rebase fixes
ksuprynowicz Jan 5, 2026
52ed59b
Fixes for existing overhauled QML
ada-tv Nov 6, 2025
df4d3cb
First pass of More app and Places app
ada-tv Nov 6, 2025
5d030af
Sort by ID instead of alphabetically, quicker 'has users' button, pla…
ada-tv Nov 7, 2025
953a7e7
More app retries, mistake fixups
ada-tv Nov 7, 2025
d599c79
Use periodic shuffling in Places app, prefer places with thumbnails
ada-tv Nov 7, 2025
ad1b302
Add nametag visibility to settings
ada-tv Nov 7, 2025
e6e6d74
Show domain in user count, place portals
ada-tv Nov 7, 2025
fd8f733
Fix avatar app edit having empty fields if the "add new" button was c…
ada-tv Nov 7, 2025
ca12e18
Widen portal text entity, update todo list
ada-tv Nov 8, 2025
42ec334
Restore HTML places app and shelve the QML one for later
ada-tv Nov 8, 2025
b40188e
External app list support in More app
ada-tv Nov 14, 2025
52a3cea
More settings
ada-tv Nov 15, 2025
52a7ba6
Remove YouTube forced 30 FPS on Web entities, WidgetZoo scroll backgr…
ada-tv Nov 15, 2025
16e65ab
Image embeds in chat app
ada-tv Nov 25, 2025
c616de6
Fix CBOR crashes
ksuprynowicz Feb 20, 2026
8c24ba7
Fix prefetchAndMoveToThread post-rebase
ksuprynowicz Feb 20, 2026
505b856
Update settings
ada-tv Feb 21, 2026
9e10b11
fix qt6 chat
ada-tv Feb 21, 2026
ed4c048
editable settings spinboxes, local lights setting
ada-tv Feb 22, 2026
fd5350c
Kinda-working real settings for color scheme/high contrast/reduced mo…
ada-tv Feb 23, 2026
87448ba
Avatar app changes
ada-tv Feb 23, 2026
1ff6ce1
Save chat history in chat.js instead of QML, stop forcing chat window…
ada-tv Feb 23, 2026
bbe4264
Fix avatar entity data parsing in avatar app
ada-tv Feb 23, 2026
e9ae130
update nix build to qt6
RTUnreal Jun 11, 2026
a855e23
fix qt6 qmetatype
RTUnreal Jun 13, 2026
796ab1f
fix some qml imports
RTUnreal Jul 18, 2026
a068a93
manually check for starvation in audioclient
RTUnreal Jul 19, 2026
0d49282
remove redundant comment
RTUnreal Jul 19, 2026
6fdba0b
fix typo
RTUnreal Jul 20, 2026
db512b5
use smart pointers in AudioClient
RTUnreal Jul 24, 2026
b822ecd
fix warnings and upgrade away from deprecated functions
RTUnreal Jul 24, 2026
ed25435
use correct TexturePointer create function
RTUnreal Jul 25, 2026
631c705
use correct erase function
RTUnreal Jul 25, 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
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ if (ANDROID)
add_definitions(-DANDROID_APP_INTERFACE)
endif()
else ()
set(PLATFORM_QT_COMPONENTS WebEngine Xml)
set(PLATFORM_QT_COMPONENTS WebEngineCore Xml)
add_definitions(-DHAVE_EXT_clip_cull_distance)
endif()

Expand All @@ -160,7 +160,7 @@ else()
endif()

foreach(PLATFORM_QT_COMPONENT ${PLATFORM_QT_COMPONENTS})
list(APPEND PLATFORM_QT_LIBRARIES "Qt5::${PLATFORM_QT_COMPONENT}")
list(APPEND PLATFORM_QT_LIBRARIES "Qt6::${PLATFORM_QT_COMPONENT}")
endforeach()

message(STATUS "Use optimized IK: " ${OVERTE_USE_OPTIMIZED_IK})
Expand Down
2 changes: 1 addition & 1 deletion android/apps/framePlayer/src/main/cpp/qml/main.qml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import QtQuick 2.2
import QtQuick.Dialogs 1.1
import QtQuick.Dialogs
import Qt.labs.folderlistmodel 2.11

Item {
Expand Down
2 changes: 1 addition & 1 deletion android/apps/interface/src/main/cpp/native.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ Java_io_highfidelity_hifiinterface_fragment_LoginFragment_retrieveAccessToken(JN

QMetaObject::invokeMethod(accountManager.data(), "requestAccessTokenWithAuthCode",
Q_ARG(const QString&, authCode), Q_ARG(const QString&, clientId),
Q_ARG(const QString&, clientSecret), Q_ARG(const QString&, redirectUri));
Q_GENERIC_ARG(const QString&, clientSecret), Q_GENERIC_ARG(const QString&, redirectUri));

}

Expand Down
2 changes: 1 addition & 1 deletion assignment-client/src/Agent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -753,7 +753,7 @@ void Agent::processAgentAvatarAudio() {
if (_numAvatarSoundSentBytes == (int)audioData->getNumBytes()) {
// we're done with this sound object - so set our pointer back to NULL
// and our sent bytes back to zero
_avatarSound.clear();
_avatarSound.reset();
_numAvatarSoundSentBytes = 0;
_flushEncoder = true;

Expand Down
2 changes: 1 addition & 1 deletion assignment-client/src/AgentScriptingInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public slots:
* }, 1000);
* }());
*/
void playAvatarSound(SharedSoundPointer avatarSound) const { _agent->playAvatarSound(avatarSound); }
void playAvatarSound(std::shared_ptr<Sound> avatarSound) const { _agent->playAvatarSound(avatarSound); }

private:
Agent* _agent;
Expand Down
2 changes: 1 addition & 1 deletion assignment-client/src/AssignmentClientMonitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ void AssignmentClientMonitor::spawnChildClient() {

void AssignmentClientMonitor::checkSpares() {
auto nodeList = DependencyManager::get<LimitedNodeList>();
QUuid aSpareId = "";
QUuid aSpareId {};
unsigned int spareCount = 0;
unsigned int totalCount = 0;

Expand Down
3 changes: 2 additions & 1 deletion assignment-client/src/assets/AssetServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include <QtGui/QImageReader>
#include <QtCore/QVector>
#include <QtCore/QUrlQuery>
#include <QtCore5Compat/QRegExp>

#include <ClientServerUtils.h>
#include <NodeType.h>
Expand Down Expand Up @@ -434,7 +435,7 @@ void AssetServer::completeSetup() {
// Check the asset directory to output some information about what we have
auto files = _filesDirectory.entryList(QDir::Files);

QRegExp hashFileRegex { AssetUtils::ASSET_HASH_REGEX_STRING };
QRegularExpression hashFileRegex { AssetUtils::ASSET_HASH_REGEX_STRING };
auto hashedFiles = files.filter(hashFileRegex);

qCInfo(asset_server) << "There are" << hashedFiles.size() << "asset files in the asset directory.";
Expand Down
6 changes: 3 additions & 3 deletions assignment-client/src/avatars/ScriptableAvatar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,14 @@ void ScriptableAvatar::stopAnimation() {
QMetaObject::invokeMethod(this, "stopAnimation");
return;
}
_animation.clear();
_animation.reset();
}

AnimationDetails ScriptableAvatar::getAnimationDetails() {
if (QThread::currentThread() != thread()) {
AnimationDetails result;
BLOCKING_INVOKE_METHOD(this, "getAnimationDetails",
Q_RETURN_ARG(AnimationDetails, result));
Q_GENERIC_RETURN_ARG(AnimationDetails, result));
return result;
}
return _animationDetails;
Expand Down Expand Up @@ -222,7 +222,7 @@ void ScriptableAvatar::update(float deltatime) {
}

} else {
_animation.clear();
_animation.reset();
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions assignment-client/src/octree/OctreeHeadlessViewer.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,14 @@ public slots:
* @function EntityViewer.setPosition
* @param {Vec3} position - The position of the view frustum.
*/
void setPosition(const glm::vec3& position) { _hasViewFrustum = true; _viewFrustum.setPosition(position); }
void setPosition(const glm::vec<3,float,glm::packed_highp>& position) { _hasViewFrustum = true; _viewFrustum.setPosition(position); }

/*@jsdoc
* Sets the orientation of the view frustum.
* @function EntityViewer.setOrientation
* @param {Quat} orientation - The orientation of the view frustum.
*/
void setOrientation(const glm::quat& orientation) { _hasViewFrustum = true; _viewFrustum.setOrientation(orientation); }
void setOrientation(const glm::qua<float,glm::packed_highp>& orientation) { _hasViewFrustum = true; _viewFrustum.setOrientation(orientation); }

/*@jsdoc
* Sets the radius of the center "keyhole" in the view frustum.
Expand Down Expand Up @@ -99,14 +99,14 @@ public slots:
* @function EntityViewer.getPosition
* @returns {Vec3} The position of the view frustum.
*/
const glm::vec3& getPosition() const { return _viewFrustum.getPosition(); }
const glm::vec<3,float,glm::packed_highp>& getPosition() const { return _viewFrustum.getPosition(); }

/*@jsdoc
* Gets the orientation of the view frustum.
* @function EntityViewer.getOrientation
* @returns {Quat} The orientation of the view frustum.
*/
const glm::quat& getOrientation() const { return _viewFrustum.getOrientation(); }
const glm::qua<float,glm::packed_highp>& getOrientation() const { return _viewFrustum.getOrientation(); }


// getters for LOD and PPS
Expand Down
6 changes: 3 additions & 3 deletions cmake/macros/MemoryDebugger.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@ if (OVERTE_MEMORY_DEBUGGING)
# usr/bin/ld: ../../libraries/audio/libaudio.so: undefined reference to `FIR_1x4_AVX512(float*, float*, float*, float*, float*, float (*) [64], int)'
# The '-DSTACK_PROTECTOR' argument below disables the usage of this function in the code. This should be fine as it only works on the latest Intel hardware,
# and is an optimization that should make no functional difference.
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize=leak -U_FORTIFY_SOURCE -DSTACK_PROTECTOR -fstack-protector-strong -fno-omit-frame-pointer")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize=leak")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize=leak")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize=leak -U_FORTIFY_SOURCE -DSTACK_PROTECTOR -fstack-protector-strong -fno-omit-frame-pointer -fsanitize-recover=address")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize=leak -fsanitize-recover=address")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize=leak -fsanitize-recover=address")
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
# https://docs.microsoft.com/en-us/cpp/sanitizers/asan?view=msvc-160
# Supported experimentally starting from VS2019 v16.4, and officially from v16.9.
Expand Down
4 changes: 2 additions & 2 deletions cmake/macros/PackageLibrariesForDeployment.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ macro(PACKAGE_LIBRARIES_FOR_DEPLOYMENT)
if (WIN32)
set(PLUGIN_PATH "plugins")

get_target_property(Qt_Core_Location Qt5::Core LOCATION)
get_target_property(Qt_Core_Location Qt6::Core LOCATION)
get_filename_component(QT_BIN_DIR ${Qt_Core_Location} DIRECTORY)
find_program(WINDEPLOYQT_COMMAND windeployqt PATHS ${QT_BIN_DIR})

Expand All @@ -23,7 +23,7 @@ macro(PACKAGE_LIBRARIES_FOR_DEPLOYMENT)
endif ()

# add a post-build command to call windeployqt to copy Qt plugins
set(CMD "${WINDEPLOYQT_COMMAND} ${EXTRA_DEPLOY_OPTIONS} --no-compiler-runtime --no-opengl-sw --no-angle -no-system-d3d-compiler")
set(CMD "${WINDEPLOYQT_COMMAND} ${EXTRA_DEPLOY_OPTIONS} --no-compiler-runtime --no-opengl-sw -no-system-d3d-compiler")

file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/windeploy-${TARGET_NAME}.bat" "${CMD} %*")
add_custom_command(
Expand Down
6 changes: 3 additions & 3 deletions cmake/macros/SetupHifiLibrary.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,13 @@ macro(SETUP_HIFI_LIBRARY)
endif ()

set(${TARGET_NAME}_DEPENDENCY_QT_MODULES ${ARGN})
list(APPEND ${TARGET_NAME}_DEPENDENCY_QT_MODULES Core)
list(APPEND ${TARGET_NAME}_DEPENDENCY_QT_MODULES Core Core5Compat)

# find these Qt modules and link them to our own target
find_package(Qt5 COMPONENTS ${${TARGET_NAME}_DEPENDENCY_QT_MODULES} QUIET REQUIRED CMAKE_FIND_ROOT_PATH_BOTH)
find_package(Qt6 COMPONENTS ${${TARGET_NAME}_DEPENDENCY_QT_MODULES} QUIET REQUIRED CMAKE_FIND_ROOT_PATH_BOTH)

foreach(QT_MODULE ${${TARGET_NAME}_DEPENDENCY_QT_MODULES})
target_link_libraries(${TARGET_NAME} Qt5::${QT_MODULE})
target_link_libraries(${TARGET_NAME} Qt6::${QT_MODULE})
endforeach()

# Don't make scribed shaders, generated entity files, generated pipelines, or QT resource files cumulative
Expand Down
6 changes: 3 additions & 3 deletions cmake/macros/SetupHifiProject.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ macro(SETUP_HIFI_PROJECT)
target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_BINARY_DIR}/includes")

set(${TARGET_NAME}_DEPENDENCY_QT_MODULES ${ARGN})
list(APPEND ${TARGET_NAME}_DEPENDENCY_QT_MODULES Core)
list(APPEND ${TARGET_NAME}_DEPENDENCY_QT_MODULES Core Core5Compat)

# find these Qt modules and link them to our own target
find_package(Qt5 COMPONENTS ${${TARGET_NAME}_DEPENDENCY_QT_MODULES} QUIET REQUIRED)
find_package(Qt6 COMPONENTS ${${TARGET_NAME}_DEPENDENCY_QT_MODULES} QUIET REQUIRED)

# disable /OPT:REF and /OPT:ICF for the Debug builds
# This will prevent the following linker warnings
Expand All @@ -42,7 +42,7 @@ macro(SETUP_HIFI_PROJECT)
endif()

foreach(QT_MODULE ${${TARGET_NAME}_DEPENDENCY_QT_MODULES})
target_link_libraries(${TARGET_NAME} Qt5::${QT_MODULE})
target_link_libraries(${TARGET_NAME} Qt6::${QT_MODULE})
endforeach()
target_link_libraries(${TARGET_NAME} ${CMAKE_THREAD_LIBS_INIT})

Expand Down
4 changes: 2 additions & 2 deletions cmake/macros/SetupHifiTestCase.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,10 @@ macro(SETUP_HIFI_TESTCASE)
list(APPEND ${TARGET_NAME}_DEPENDENCY_QT_MODULES Core Test)

# find these Qt modules and link them to our own target
find_package(Qt5 COMPONENTS ${${TARGET_NAME}_DEPENDENCY_QT_MODULES} QUIET REQUIRED)
find_package(Qt6 COMPONENTS ${${TARGET_NAME}_DEPENDENCY_QT_MODULES} QUIET REQUIRED)

foreach(QT_MODULE ${${TARGET_NAME}_DEPENDENCY_QT_MODULES})
target_link_libraries(${TARGET_NAME} Qt5::${QT_MODULE})
target_link_libraries(${TARGET_NAME} Qt6::${QT_MODULE})
endforeach()
target_link_libraries(${TARGET_NAME} ${CMAKE_THREAD_LIBS_INIT})

Expand Down
15 changes: 11 additions & 4 deletions cmake/macros/TargetQuazip.cmake
Original file line number Diff line number Diff line change
@@ -1,19 +1,26 @@
#
#
# Copyright 2015 High Fidelity, Inc.
# Copyright 2026 Overte e.V.
# Created by Leonardo Murillo on 2015/11/20
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
#
#
macro(TARGET_QUAZIP)
# System QuaZip sets `IMPORTED_GLOBAL` for itself when finding it using find_package().
# Running find_package() a second time shouldn't do anything, since the package was already found,
# yet it fails with:
# `Attempt to promote imported target "QuaZip::QuaZip" to global scope (by setting IMPORTED_GLOBAL) which is not built in this directory.`
# We avoid this error by guarding against running find_package() multiple times.
if(OVERTE_USE_SYSTEM_LIBS)
find_package(PkgConfig REQUIRED)
pkg_check_modules(QuaZip REQUIRED quazip1-qt5)
pkg_check_modules(QuaZip REQUIRED quazip1-qt6)
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${QuaZip_INCLUDE_DIRS})
target_link_libraries(${TARGET_NAME} ${QuaZip_LINK_LIBRARIES})
else()
find_package(QuaZip-Qt5 QUIET REQUIRED)
if(NOT TARGET QuaZip::QuaZip) # if target doesn't exist.
find_package(QuaZip-Qt6 QUIET REQUIRED)
endif()
target_link_libraries(${TARGET_NAME} QuaZip::QuaZip)
endif()
endmacro()
2 changes: 1 addition & 1 deletion cmake/macros/TargetVulkan.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
macro(TARGET_VULKAN)
find_package(Vulkan QUIET REQUIRED)
find_package(VulkanMemoryAllocator QUIET REQUIRED)
find_package(Qt5 COMPONENTS X11Extras QUIET REQUIRED)
find_package(Qt6 COMPONENTS X11Extras QUIET REQUIRED)
target_include_directories(${TARGET_NAME} PRIVATE ${VULKAN_INCLUDE_DIR})
target_link_libraries(${TARGET_NAME} GPUOpen::VulkanMemoryAllocator)
target_link_libraries(${TARGET_NAME} ${VULKAN_LIBRARY})
Expand Down
10 changes: 5 additions & 5 deletions cmake/modules/FindQt5LinguistToolsMacros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#=============================================================================

function(QT5_CREATE_TRANSLATION_CUSTOM _qm_files)
function(QT6_CREATE_TRANSLATION_CUSTOM _qm_files)
set(options)
set(oneValueArgs)
set(multiValueArgs OPTIONS)
Expand Down Expand Up @@ -76,20 +76,20 @@ function(QT5_CREATE_TRANSLATION_CUSTOM _qm_files)
get_source_file_property(_qm_output_location ${_ts_file} OUTPUT_LOCATION)
add_custom_command(
OUTPUT ${_tmpts_file}
COMMAND ${Qt5_LUPDATE_EXECUTABLE}
COMMAND ${Qt6_LUPDATE_EXECUTABLE}
ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file}
COMMAND ${CMAKE_COMMAND} -E copy ${_ts_file} ${_tmpts_file}
DEPENDS ${_my_sources} ${_ts_lst_file} VERBATIM)
if( _qm_output_location )
set_property(SOURCE ${_tmpts_file} PROPERTY OUTPUT_LOCATION ${_qm_output_location})
endif()
endforeach()
qt5_add_translation(${_qm_files} ${_my_temptsfiles})
qt6_add_translation(${_qm_files} ${_my_temptsfiles})
set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
endfunction()


function(QT5_ADD_TRANSLATION _qm_files)
function(QT6_ADD_TRANSLATION _qm_files)
foreach(_current_FILE ${ARGN})
get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE)
get_filename_component(qm ${_abs_FILE} NAME_WE)
Expand All @@ -102,7 +102,7 @@ function(QT5_ADD_TRANSLATION _qm_files)
endif()

add_custom_command(OUTPUT ${qm}
COMMAND ${Qt5_LRELEASE_EXECUTABLE}
COMMAND ${Qt6_LRELEASE_EXECUTABLE}
ARGS ${_abs_FILE} -qm ${qm}
DEPENDS ${_abs_FILE} VERBATIM
)
Expand Down
17 changes: 12 additions & 5 deletions conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class Overte(ConanFile):
"openssl*:shared": "True",
"qt*:shared": "True",
"qt*:gui": "True",
"qt*:qt5compat": "True", # Required by Quazip 1.4 and probably us
"qt*:qtdeclarative": "True",
"qt*:qtimageformats": "True", # WebP texture support
"qt*:qtlocation": "True",
Expand All @@ -39,6 +40,12 @@ class Overte(ConanFile):
"qt*:qtx11extras": "True", # Required by gpu-frame-player on Linux
"qt*:qtxmlpatterns": "True",
"qt*:qttools": "True", # windeployqt for Windows
"qt*:with_dbus": "True", # Required for Qt on Linux. Can be disabled for Windows.
"fontconfig*:shared": "True", # For Qt on Linux. Building with static fontconfig and freetype fails: https://github.com/conan-io/conan-center-index/issues/17142
"freetype*:shared": "True", # For Qt on Linux.
"nss*:shared": "True", # Dependency of Qt. "NSS recipe cannot yet build static library."
"nspr*:shared": "True", # NSS, which is a dependency of Qt, cannot link to statis NSPR.
"sqlite*:shared": "True", # Avoid `undefined symbol` errors when building NSS.
"glad*:spec": "gl",
"glad*:gl_profile": "core",
"glad*:gl_version": "4.5",
Expand Down Expand Up @@ -98,7 +105,7 @@ def requirements(self):
# Use system OpenSSL to work around OpenSSL being missing from libnode's rpath and this cascading down to Interface.
openssl = "openssl/system@overte/stable#24c4df65c52791c4955f7d47d9faef0d"
self.requires("fcitx5-qt/5.1.13@overte/stable#41b7ae9082f32e1ad83fd8a43a2c8460")
self.requires("qt/5.15.18@overte/experimental#3a9079f3023351a7319be352cc6f4665", force=True)
self.requires("qt/6.8.3", force=True)
# Replace Conan Center's glib package with our own duplicate to avoid their outdated binary cache. https://github.com/conan-io/conan-center-index/issues/17876
self.requires("glib/2.78.3@overte/conancenter", override=True)

Expand Down Expand Up @@ -140,8 +147,8 @@ def generate(self):
if self.settings.compiler == "gcc":
self.output.status("GCC compiler detected, setting default flags.")
tc.cache_variables.update({
"CMAKE_CXX_FLAGS_DEBUG_INIT": "-Og -ggdb3",
"CMAKE_C_FLAGS_DEBUG_INIT": "-Og -ggdb3",
"CMAKE_CXX_FLAGS_DEBUG_INIT": "-O0 -ggdb3",
"CMAKE_C_FLAGS_DEBUG_INIT": "-O0 -ggdb3",
"CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT": "-O2 -DNDEBUG -ggdb2",
"CMAKE_C_FLAGS_RELWITHDEBINFO_INIT": "-O2 -DNDEBUG -ggdb2",
"CMAKE_CXX_FLAGS_RELEASE_INIT": "-O3 -DNDEBUG",
Expand All @@ -150,8 +157,8 @@ def generate(self):
elif self.settings.compiler == "clang":
self.output.status("Clang compiler detected, setting default flags.")
tc.cache_variables.update({
"CMAKE_CXX_FLAGS_DEBUG_INIT": "-Og -g",
"CMAKE_C_FLAGS_DEBUG_INIT": "-Og -g",
"CMAKE_CXX_FLAGS_DEBUG_INIT": "-O0 -g",
"CMAKE_C_FLAGS_DEBUG_INIT": "-O0 -g",
"CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT": "-O2 -DNDEBUG -g",
"CMAKE_C_FLAGS_RELWITHDEBINFO_INIT": "-O2 -DNDEBUG -g",
"CMAKE_CXX_FLAGS_RELEASE_INIT": "-O3 -DNDEBUG",
Expand Down
3 changes: 2 additions & 1 deletion domain-server/src/ContentSettingsBackupHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include <quazip/quazip.h>
#include <quazip/quazipfile.h>
#include <quazip/quazipdir.h>
#include <QtCore5Compat/QRegExp>

#if !defined(__clang__) && defined(__GNUC__)
#pragma GCC diagnostic pop
Expand Down Expand Up @@ -102,7 +103,7 @@ std::pair<bool, QString> ContentSettingsBackupHandler::recoverBackup(const QStri
zipFile.close();

if (zipFile.getZipError() != UNZ_OK) {
QString errorStr("Failed to unzip " + CONTENT_SETTINGS_BACKUP_FILENAME + ": " + zipFile.getZipError());
QString errorStr("Failed to unzip " + CONTENT_SETTINGS_BACKUP_FILENAME + ": " + QString::number(zipFile.getZipError()));
qCritical() << errorStr;
return { false, errorStr };
}
Expand Down
7 changes: 4 additions & 3 deletions domain-server/src/DomainContentBackupManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QtCore5Compat/QRegExp>

#include <quazip/quazip.h>

Expand Down Expand Up @@ -81,7 +82,7 @@ void DomainContentBackupManager::parseBackupRules(const QVariantList& backupRule
int count = map["maxBackupVersions"].toInt();
auto name = map["Name"].toString();
auto format = name.toLower();
QRegExp matchDisallowedCharacters { "[^a-zA-Z0-9\\-_]+" };
QRegularExpression matchDisallowedCharacters { "[^a-zA-Z0-9\\-_]+" };
format.replace(matchDisallowedCharacters, "_");

qCDebug(domain_server) << " Name:" << name;
Expand Down Expand Up @@ -313,8 +314,8 @@ void DomainContentBackupManager::recoverFromBackup(MiniPromise::Promise promise,
};

if (QThread::currentThread() != thread()) {
QMetaObject::invokeMethod(this, "recoverFromBackup", Q_ARG(MiniPromise::Promise, promise),
Q_ARG(const QString&, backupName), Q_ARG(const QString&, username));
QMetaObject::invokeMethod(this, "recoverFromBackup", Q_GENERIC_ARG(MiniPromise::Promise, promise),
Q_GENERIC_ARG(const QString&, backupName), Q_GENERIC_ARG(const QString&, username));
return;
}

Expand Down
Loading
Loading