mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2026-10-20 15:27:17 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c5d8c3b7b5 |
No files matched your search
@@ -8,8 +8,6 @@
|
||||
<string>Moonlight</string>
|
||||
<key>LSSupportsGameMode</key>
|
||||
<true/>
|
||||
<key>NSApplicationUpdateCycleEnabled</key>
|
||||
<false/>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>Stream games and other applications from another PC</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
|
||||
+1
-1
Submodule app/SDL_GameControllerDB updated: 8d9fefd7b8...c1d5289a1f.
@@ -186,7 +186,7 @@ IdentityManager::getSslKey()
|
||||
|
||||
BUF_MEM* mem;
|
||||
BIO_get_mem_ptr(bio, &mem);
|
||||
m_CachedSslKey = QSslKey(QByteArray(mem->data, (int)mem->length), getSslCertificate().publicKey().algorithm());
|
||||
m_CachedSslKey = QSslKey(QByteArray(mem->data, (int)mem->length), QSsl::Rsa);
|
||||
|
||||
BIO_free(bio);
|
||||
EVP_PKEY_free(pk);
|
||||
|
||||
@@ -140,9 +140,6 @@ NvPairingManager::getSignatureFromPemCert(const QByteArray& certificate)
|
||||
|
||||
X509* cert = PEM_read_bio_X509(bio, nullptr, nullptr, nullptr);
|
||||
BIO_free_all(bio);
|
||||
if (cert == nullptr) {
|
||||
return QByteArray();
|
||||
}
|
||||
|
||||
QByteArray signature = getSignatureFromCert(cert);
|
||||
X509_free(cert);
|
||||
@@ -162,15 +159,9 @@ NvPairingManager::verifySignature(const QByteArray& data, const QByteArray& sign
|
||||
|
||||
X509* cert = PEM_read_bio_X509(bio, nullptr, nullptr, nullptr);
|
||||
BIO_free_all(bio);
|
||||
if (cert == nullptr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EVP_PKEY* pubKey = X509_get_pubkey(cert);
|
||||
if (pubKey == nullptr) {
|
||||
X509_free(cert);
|
||||
return false;
|
||||
}
|
||||
THROW_BAD_ALLOC_IF_NULL(pubKey);
|
||||
|
||||
EVP_MD_CTX* mdctx = EVP_MD_CTX_create();
|
||||
THROW_BAD_ALLOC_IF_NULL(mdctx);
|
||||
@@ -287,7 +278,7 @@ NvPairingManager::pair(QString appVersion, QString pin, QSslCertificate& serverC
|
||||
}
|
||||
|
||||
QByteArray challengeResponseData = decrypt(m_Http.getXmlStringFromHex(challengeXml, "challengeresponse"), aesKey);
|
||||
if (challengeResponseData.size() < hashLength + 16) {
|
||||
if (challengeResponseData.size() < hashLength) {
|
||||
qCritical() << "Invalid challengeresponse at stage #2";
|
||||
m_Http.openConnectionToString(m_Http.m_BaseUrlHttp, "unpair", nullptr, REQUEST_TIMEOUT_MS);
|
||||
return PairState::FAILED;
|
||||
|
||||
@@ -10,8 +10,6 @@ DxVsyncSource::DxVsyncSource(Pacer* pacer) :
|
||||
m_LastMonitor(nullptr)
|
||||
{
|
||||
SDL_zero(m_WaitForVblankEventParams);
|
||||
m_WaitForVblankEventParams.VidPnSourceId = D3DDDI_ID_UNINITIALIZED;
|
||||
SDL_zero(m_AdapterLuid);
|
||||
}
|
||||
|
||||
DxVsyncSource::~DxVsyncSource()
|
||||
@@ -74,43 +72,41 @@ bool DxVsyncSource::isAsync()
|
||||
return false;
|
||||
}
|
||||
|
||||
bool DxVsyncSource::waitForVsync()
|
||||
void DxVsyncSource::waitForVsync()
|
||||
{
|
||||
NTSTATUS status;
|
||||
|
||||
// If the monitor has changed from last time, open the new adapter
|
||||
HMONITOR currentMonitor = MonitorFromWindow(m_Window, MONITOR_DEFAULTTONEAREST);
|
||||
if (!currentMonitor || currentMonitor != m_LastMonitor) {
|
||||
// Close the old adapter
|
||||
if (m_WaitForVblankEventParams.hAdapter != 0) {
|
||||
D3DKMT_CLOSEADAPTER closeAdapterParams = {};
|
||||
closeAdapterParams.hAdapter = m_WaitForVblankEventParams.hAdapter;
|
||||
m_D3DKMTCloseAdapter(&closeAdapterParams);
|
||||
m_WaitForVblankEventParams.hAdapter = 0;
|
||||
}
|
||||
m_LastMonitor = nullptr;
|
||||
|
||||
// We can't wait if we're not on any monitor
|
||||
if (!currentMonitor) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (currentMonitor != m_LastMonitor) {
|
||||
MONITORINFOEXA monitorInfo = {};
|
||||
monitorInfo.cbSize = sizeof(monitorInfo);
|
||||
if (!GetMonitorInfoA(currentMonitor, &monitorInfo)) {
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
||||
"GetMonitorInfo() failed: %d",
|
||||
GetLastError());
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
DEVMODEA monitorMode = {};
|
||||
DEVMODEA monitorMode;
|
||||
monitorMode.dmSize = sizeof(monitorMode);
|
||||
if (!EnumDisplaySettingsA(monitorInfo.szDevice, ENUM_CURRENT_SETTINGS, &monitorMode)) {
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
||||
"EnumDisplaySettings() failed: %d",
|
||||
GetLastError());
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
|
||||
"Monitor changed: %s %d Hz",
|
||||
monitorInfo.szDevice,
|
||||
monitorMode.dmDisplayFrequency);
|
||||
|
||||
// Close the old adapter
|
||||
if (m_WaitForVblankEventParams.hAdapter != 0) {
|
||||
D3DKMT_CLOSEADAPTER closeAdapterParams = {};
|
||||
closeAdapterParams.hAdapter = m_WaitForVblankEventParams.hAdapter;
|
||||
m_D3DKMTCloseAdapter(&closeAdapterParams);
|
||||
}
|
||||
|
||||
D3DKMT_OPENADAPTERFROMHDC openAdapterParams = {};
|
||||
@@ -119,7 +115,7 @@ bool DxVsyncSource::waitForVsync()
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
||||
"CreateDC() failed: %d",
|
||||
GetLastError());
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
// Open the new adapter
|
||||
@@ -130,38 +126,21 @@ bool DxVsyncSource::waitForVsync()
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
||||
"D3DKMTOpenAdapterFromHdc() failed: %x",
|
||||
status);
|
||||
return false;
|
||||
}
|
||||
|
||||
// VidPnSourceId is scoped to the adapter, so we must also check the adapter LUID
|
||||
if (m_AdapterLuid.LowPart != openAdapterParams.AdapterLuid.LowPart ||
|
||||
m_AdapterLuid.HighPart != openAdapterParams.AdapterLuid.HighPart ||
|
||||
m_WaitForVblankEventParams.VidPnSourceId != openAdapterParams.VidPnSourceId) {
|
||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
|
||||
"Monitor changed: %s %d Hz",
|
||||
monitorInfo.szDevice,
|
||||
monitorMode.dmDisplayFrequency);
|
||||
return;
|
||||
}
|
||||
|
||||
m_WaitForVblankEventParams.hAdapter = openAdapterParams.hAdapter;
|
||||
m_WaitForVblankEventParams.hDevice = 0;
|
||||
m_WaitForVblankEventParams.VidPnSourceId = openAdapterParams.VidPnSourceId;
|
||||
|
||||
m_AdapterLuid = openAdapterParams.AdapterLuid;
|
||||
m_LastMonitor = currentMonitor;
|
||||
}
|
||||
|
||||
status = m_D3DKMTWaitForVerticalBlankEvent(&m_WaitForVblankEventParams);
|
||||
if (status != STATUS_SUCCESS) {
|
||||
if (status != STATUS_GRAPHICS_PRESENT_OCCLUDED) {
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
||||
"D3DKMTWaitForVerticalBlankEvent() failed: %x",
|
||||
status);
|
||||
}
|
||||
|
||||
m_LastMonitor = nullptr;
|
||||
return false;
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
||||
"D3DKMTWaitForVerticalBlankEvent() failed: %x",
|
||||
status);
|
||||
return;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -10,7 +10,6 @@ typedef UINT D3DKMT_HANDLE;
|
||||
typedef UINT D3DDDI_VIDEO_PRESENT_SOURCE_ID;
|
||||
#define STATUS_SUCCESS ((NTSTATUS)0x00000000L)
|
||||
#define STATUS_GRAPHICS_PRESENT_OCCLUDED ((NTSTATUS)0xC01E0006L)
|
||||
#define D3DDDI_ID_UNINITIALIZED (UINT)(~0)
|
||||
typedef struct _D3DKMT_OPENADAPTERFROMHDC {
|
||||
HDC hDc;
|
||||
D3DKMT_HANDLE hAdapter;
|
||||
@@ -40,14 +39,13 @@ public:
|
||||
|
||||
virtual bool isAsync() override;
|
||||
|
||||
virtual bool waitForVsync() override;
|
||||
virtual void waitForVsync() override;
|
||||
|
||||
private:
|
||||
Pacer* m_Pacer;
|
||||
HMODULE m_Gdi32Handle;
|
||||
HWND m_Window;
|
||||
HMONITOR m_LastMonitor;
|
||||
LUID m_AdapterLuid;
|
||||
D3DKMT_WAITFORVERTICALBLANKEVENT m_WaitForVblankEventParams;
|
||||
|
||||
PFND3DKMTOPENADAPTERFROMHDC m_D3DKMTOpenAdapterFromHdc;
|
||||
|
||||
@@ -115,20 +115,13 @@ int Pacer::vsyncThread(void *context)
|
||||
while (!me->m_Stopping) {
|
||||
if (async) {
|
||||
// Wait for the VSync source to invoke signalVsync() or 100ms to elapse
|
||||
QMutexLocker locker(&me->m_FrameQueueLock);
|
||||
me->m_FrameQueueLock.lock();
|
||||
me->m_VsyncSignalled.wait(&me->m_FrameQueueLock, 100);
|
||||
me->m_FrameQueueLock.unlock();
|
||||
}
|
||||
else {
|
||||
// Let the VSync source wait in the context of our thread
|
||||
if (!me->m_VsyncSource->waitForVsync()) {
|
||||
// Fall back to a fixed delay if the VSync source fails
|
||||
//
|
||||
// NB: We don't actually expect signalVsync() to be called, since
|
||||
// this is a synchronous VSync source, but we wait on m_VsyncSignalled
|
||||
// anyway so that the destructor can immediately wake us on shutdown.
|
||||
QMutexLocker locker(&me->m_FrameQueueLock);
|
||||
me->m_VsyncSignalled.wait(&me->m_FrameQueueLock, 1000 / me->m_DisplayFps);
|
||||
}
|
||||
me->m_VsyncSource->waitForVsync();
|
||||
}
|
||||
|
||||
if (me->m_Stopping) {
|
||||
@@ -155,25 +148,24 @@ int Pacer::renderThread(void* context)
|
||||
// Wait for the renderer to be ready for the next frame
|
||||
me->m_VsyncRenderer->waitToRender();
|
||||
|
||||
AVFrame* frame;
|
||||
{
|
||||
// Acquire the frame queue lock to protect the queue and
|
||||
// the not empty condition
|
||||
QMutexLocker locker(&me->m_FrameQueueLock);
|
||||
// Acquire the frame queue lock to protect the queue and
|
||||
// the not empty condition
|
||||
me->m_FrameQueueLock.lock();
|
||||
|
||||
// Wait for a frame to be ready to render
|
||||
while (!me->m_Stopping && me->m_RenderQueue.isEmpty()) {
|
||||
me->m_RenderQueueNotEmpty.wait(&me->m_FrameQueueLock);
|
||||
}
|
||||
|
||||
if (me->m_Stopping) {
|
||||
// Exit this thread
|
||||
break;
|
||||
}
|
||||
|
||||
frame = me->m_RenderQueue.dequeue();
|
||||
// Wait for a frame to be ready to render
|
||||
while (!me->m_Stopping && me->m_RenderQueue.isEmpty()) {
|
||||
me->m_RenderQueueNotEmpty.wait(&me->m_FrameQueueLock);
|
||||
}
|
||||
|
||||
if (me->m_Stopping) {
|
||||
// Exit this thread
|
||||
me->m_FrameQueueLock.unlock();
|
||||
break;
|
||||
}
|
||||
|
||||
AVFrame* frame = me->m_RenderQueue.dequeue();
|
||||
me->m_FrameQueueLock.unlock();
|
||||
|
||||
me->renderFrame(frame);
|
||||
}
|
||||
|
||||
@@ -257,7 +249,7 @@ void Pacer::handleVsync(int timeUntilNextVsyncMillis)
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_Stopping || m_PacingQueue.isEmpty()) {
|
||||
if (m_Stopping) {
|
||||
m_FrameQueueLock.unlock();
|
||||
return;
|
||||
}
|
||||
@@ -357,7 +349,7 @@ void Pacer::renderFrame(AVFrame* frame)
|
||||
av_frame_free(&frame);
|
||||
|
||||
// Drop frames if we have too many queued up for a while
|
||||
QMutexLocker frameQueueLocker(&m_FrameQueueLock);
|
||||
m_FrameQueueLock.lock();
|
||||
|
||||
int frameDropTarget;
|
||||
|
||||
@@ -390,11 +382,13 @@ void Pacer::renderFrame(AVFrame* frame)
|
||||
AVFrame* frame = m_RenderQueue.dequeue();
|
||||
|
||||
// Drop the lock while we call av_frame_free()
|
||||
frameQueueLocker.unlock();
|
||||
m_FrameQueueLock.unlock();
|
||||
m_VideoStats->pacerDroppedFrames++;
|
||||
av_frame_free(&frame);
|
||||
frameQueueLocker.relock();
|
||||
m_FrameQueueLock.lock();
|
||||
}
|
||||
|
||||
m_FrameQueueLock.unlock();
|
||||
}
|
||||
|
||||
void Pacer::dropFrameForEnqueue(QQueue<AVFrame*>& queue)
|
||||
|
||||
@@ -22,10 +22,9 @@ public:
|
||||
// sources require calls to waitForVsync().
|
||||
virtual bool isAsync() = 0;
|
||||
|
||||
virtual bool waitForVsync() {
|
||||
virtual void waitForVsync() {
|
||||
// Synchronous sources must implement waitForVsync()!
|
||||
SDL_assert(false);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+3
-25
@@ -1,25 +1,3 @@
|
||||
/*
|
||||
* h264bitstream - a library for reading and writing H.264 video
|
||||
* Copyright (C) 2005-2007 Auroras Entertainment, LLC
|
||||
* Copyright (C) 2008-2011 Avail-TVN
|
||||
*
|
||||
* Written by Alex Izvorski <aizvorski@gmail.com> and Alex Giladi <alex.giladi@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _H264_BS_H
|
||||
#define _H264_BS_H 1
|
||||
|
||||
@@ -101,7 +79,7 @@ static inline int bs_eof(bs_t* b) { if (b->p >= b->end) { return 1; } else { ret
|
||||
|
||||
static inline int bs_overrun(bs_t* b) { if (b->p > b->end) { return 1; } else { return 0; } }
|
||||
|
||||
static inline int bs_pos(bs_t* b) { if (b->p > b->end) { return (int)(b->end - b->start); } else { return (int)(b->p - b->start); } }
|
||||
static inline int bs_pos(bs_t* b) { if (b->p > b->end) { return (b->end - b->start); } else { return (b->p - b->start); } }
|
||||
|
||||
static inline uint32_t bs_read_u1(bs_t* b)
|
||||
{
|
||||
@@ -208,7 +186,7 @@ static inline void bs_write_u(bs_t* b, int n, uint32_t v)
|
||||
int i;
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
bs_write_u1(b, (n - i - 1 >= 32) ? 0 : ((v >> ( n - i - 1 ))&0x01) );
|
||||
bs_write_u1(b, (v >> ( n - i - 1 ))&0x01 );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,7 +195,7 @@ static inline void bs_write_u8(bs_t* b, uint32_t v)
|
||||
#ifdef FAST_U8
|
||||
if (b->bits_left == 8 && ! bs_eof(b)) // can do fast write
|
||||
{
|
||||
b->p[0] = (uint8_t)v;
|
||||
b->p[0] = v;
|
||||
b->p++;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,25 +1,3 @@
|
||||
/*
|
||||
* h264bitstream - a library for reading and writing H.264 video
|
||||
* Copyright (C) 2005-2007 Auroras Entertainment, LLC
|
||||
* Copyright (C) 2008-2011 Avail-TVN
|
||||
*
|
||||
* Written by Alex Izvorski <aizvorski@gmail.com> and Alex Giladi <alex.giladi@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
@@ -1,26 +1,3 @@
|
||||
/*
|
||||
* h264bitstream - a library for reading and writing H.264 video
|
||||
* Copyright (C) 2005-2007 Auroras Entertainment, LLC
|
||||
* Copyright (C) 2008-2011 Avail-TVN
|
||||
* Copyright (C) 2012 Alex Izvorski
|
||||
*
|
||||
* Written by Alex Izvorski <aizvorski@gmail.com> and Alex Giladi <alex.giladi@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
@@ -384,11 +361,6 @@ void write_seq_parameter_set_rbsp(sps_t* sps, bs_t* b)
|
||||
}
|
||||
else if( sps->pic_order_cnt_type == 1 )
|
||||
{
|
||||
if (sps->num_ref_frames_in_pic_order_cnt_cycle > 256)
|
||||
{
|
||||
sps->num_ref_frames_in_pic_order_cnt_cycle = 256;
|
||||
}
|
||||
|
||||
bs_write_u1(b, sps->delta_pic_order_always_zero_flag);
|
||||
bs_write_se(b, sps->offset_for_non_ref_pic);
|
||||
bs_write_se(b, sps->offset_for_top_to_bottom_field);
|
||||
@@ -534,11 +506,6 @@ void write_vui_parameters(sps_t* sps, bs_t* b)
|
||||
|
||||
void write_hrd_parameters(hrd_t* hrd, bs_t* b)
|
||||
{
|
||||
if (hrd->cpb_cnt_minus1 > 31)
|
||||
{
|
||||
hrd->cpb_cnt_minus1 = 31;
|
||||
}
|
||||
|
||||
bs_write_ue(b, hrd->cpb_cnt_minus1);
|
||||
bs_write_u(b, 4, hrd->bit_rate_scale);
|
||||
bs_write_u(b, 4, hrd->cpb_size_scale);
|
||||
|
||||
@@ -1,25 +1,3 @@
|
||||
/*
|
||||
* h264bitstream - a library for reading and writing H.264 video
|
||||
* Copyright (C) 2005-2007 Auroras Entertainment, LLC
|
||||
* Copyright (C) 2008-2011 Avail-TVN
|
||||
*
|
||||
* Written by Alex Izvorski <aizvorski@gmail.com> and Alex Giladi <alex.giladi@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _H264_STREAM_H
|
||||
#define _H264_STREAM_H 1
|
||||
|
||||
|
||||
@@ -13,6 +13,9 @@ TEMPLATE = lib
|
||||
# Build a static library
|
||||
CONFIG += staticlib
|
||||
|
||||
# Disable warnings
|
||||
CONFIG += warn_off
|
||||
|
||||
# Include global qmake defs
|
||||
include(../globaldefs.pri)
|
||||
|
||||
|
||||
Submodule moonlight-common-c/moonlight-common-c updated: 04053843c9...f900dd4767.
@@ -250,7 +250,7 @@ if not x%QT_PATH:\5.=%==x%QT_PATH% (
|
||||
set WINDEPLOYQT_ARGS=--no-qmltooling --no-virtualkeyboard
|
||||
) else (
|
||||
rem Qt 6.8+
|
||||
set WINDEPLOYQT_ARGS=--no-system-d3d-compiler --no-system-dxc-compiler --skip-plugin-types qmltooling,generic --no-ffmpeg --force-openssl
|
||||
set WINDEPLOYQT_ARGS=--no-system-d3d-compiler --no-system-dxc-compiler --skip-plugin-types qmltooling,generic --no-ffmpeg
|
||||
set WINDEPLOYQT_ARGS=!WINDEPLOYQT_ARGS! --no-quickcontrols2fusion --no-quickcontrols2imagine --no-quickcontrols2universal
|
||||
set WINDEPLOYQT_ARGS=!WINDEPLOYQT_ARGS! --no-quickcontrols2fusionstyleimpl --no-quickcontrols2imaginestyleimpl --no-quickcontrols2universalstyleimpl --no-quickcontrols2windowsstyleimpl --no-quickcontrols2fluentwinui3styleimpl
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user