diff options
author | Jonathan Liu <net147@gmail.com> | 2012-02-07 19:25:51 +1100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-08 03:13:32 +0100 |
commit | 029bad8b5a3aef6a9ad86bf18e83bdad8ce9ffd2 (patch) | |
tree | 443bbcb43a4df648a195b1e0c10f25f33d5f67f9 | |
parent | a313db2c81c904e9cdb7099d0ebd0a906b887637 (diff) |
Fix compilation with MinGW-w64
Fix compilation with MinGW-w64 with the following changes:
- Include intrin.h to fix __cpuid not declared error
- Include intrin.h before *mmintrin.h headers to avoid extern linkable
mismatch
- Use quintptr instead of unsigned long to handle LLP64
- Do not declare winuser.h structs already provided with MinGW-w64
- Work around IID_IShellItem being declared but not defined with
MinGW-w64
- Remove incorrect use of SUCCEEDED macro on pointer
Change-Id: Ia21f8e3a1d225cf501e646eacd968bfc744ce0a2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
-rw-r--r-- | src/corelib/tools/qsimd.cpp | 2 | ||||
-rw-r--r-- | src/corelib/tools/qsimd_p.h | 4 | ||||
-rw-r--r-- | src/plugins/platforms/minimal/qminimalbackingstore.cpp | 2 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qtwindows_additional.h | 4 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsdialoghelpers.cpp | 13 |
5 files changed, 22 insertions, 3 deletions
diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp index d65dfa35a6..b3d2d62819 100644 --- a/src/corelib/tools/qsimd.cpp +++ b/src/corelib/tools/qsimd.cpp @@ -47,7 +47,7 @@ # if defined(Q_OS_WINCE) # include <qt_windows.h> # endif -# if defined(Q_OS_WIN64) && !defined(Q_CC_GNU) +# if defined(Q_OS_WIN64) # include <intrin.h> # endif #elif defined(Q_OS_LINUX) && defined(__arm__) diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 47c4a9952b..44428b7284 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -62,6 +62,10 @@ QT_BEGIN_HEADER #undef QT_HAVE_MMX #endif +#ifdef __MINGW64_VERSION_MAJOR +#include <intrin.h> +#endif + // SSE intrinsics #if defined(QT_HAVE_SSE2) && (defined(__SSE2__) || defined(Q_CC_MSVC)) #if defined(QT_LINUXBASE) diff --git a/src/plugins/platforms/minimal/qminimalbackingstore.cpp b/src/plugins/platforms/minimal/qminimalbackingstore.cpp index b6b9c0e979..319b55ee67 100644 --- a/src/plugins/platforms/minimal/qminimalbackingstore.cpp +++ b/src/plugins/platforms/minimal/qminimalbackingstore.cpp @@ -53,7 +53,7 @@ QMinimalBackingStore::QMinimalBackingStore(QWindow *window) if (QT_PREPEND_NAMESPACE(qgetenv)("QT_DEBUG_BACKINGSTORE").toInt() > 0) mDebug = true; if (mDebug) - qDebug() << "QMinimalBackingStore::QMinimalBackingStore:" << (long)this; + qDebug() << "QMinimalBackingStore::QMinimalBackingStore:" << (quintptr)this; } QMinimalBackingStore::~QMinimalBackingStore() diff --git a/src/plugins/platforms/windows/qtwindows_additional.h b/src/plugins/platforms/windows/qtwindows_additional.h index 864107e392..a85a798b9e 100644 --- a/src/plugins/platforms/windows/qtwindows_additional.h +++ b/src/plugins/platforms/windows/qtwindows_additional.h @@ -66,6 +66,8 @@ #define IFACEMETHODIMP STDMETHODIMP #define IFACEMETHODIMP_(type) STDMETHODIMP_(type) +#if !defined(__MINGW64_VERSION_MAJOR) + typedef struct tagUPDATELAYEREDWINDOWINFO { DWORD cbSize; HDC hdcDst; @@ -79,6 +81,8 @@ typedef struct tagUPDATELAYEREDWINDOWINFO { const RECT *prcDirty; } UPDATELAYEREDWINDOWINFO, *PUPDATELAYEREDWINDOWINFO; +#endif // if !defined(__MINGW64_VERSION_MAJOR) + // OpenGL Pixelformat flags. #define PFD_SUPPORT_DIRECTDRAW 0x00002000 #define PFD_DIRECT3D_ACCELERATED 0x00004000 diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp index f7863ae427..8875590e63 100644 --- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp +++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp @@ -76,7 +76,12 @@ static const IID IID_IFileOpenDialog = {0xd57c7288, 0xd4ad, 0x4768, {0xbe, 0x02, 0x9d, 0x96, 0x95, 0x32, 0xd9, 0x60}}; static const IID IID_IFileSaveDialog = {0x84bccd23, 0x5fde, 0x4cdb,{0xae, 0xa4, 0xaf, 0x64, 0xb8, 0x3d, 0x78, 0xab}}; +#ifdef __MINGW64_VERSION_MAJOR +static const IID q_IID_IShellItem = {0x43826d1e, 0xe718, 0x42ee, {0xbc, 0x55, 0xa1, 0xe2, 0x61, 0xc3, 0x7b, 0xfe}}; +#define IID_IShellItem q_IID_IShellItem +#else static const IID IID_IShellItem = {0x43826d1e, 0xe718, 0x42ee, {0xbc, 0x55, 0xa1, 0xe2, 0x61, 0xc3, 0x7b, 0xfe}}; +#endif static const IID IID_IFileDialogEvents = {0x973510db, 0x7d7f, 0x452b,{0x89, 0x75, 0x74, 0xa8, 0x58, 0x28, 0xd3, 0x54}}; static const CLSID CLSID_FileOpenDialog = {0xdc1c5a9c, 0xe88a, 0x4dde, {0xa5, 0xa1, 0x60, 0xf8, 0x2a, 0x20, 0xae, 0xf7}}; static const CLSID CLSID_FileSaveDialog = {0xc0b4e2f3, 0xba21, 0x4773,{0x8d, 0xba, 0x33, 0x5e, 0xc9, 0x46, 0xeb, 0x8b}}; @@ -141,6 +146,7 @@ typedef enum { SIATTRIBFLAGS_APPCOMPAT = 0x3, SIATTRIBFLAGS_MASK = 0x3 } SIATTRIBFLAGS; +#ifndef __MINGW64_VERSION_MAJOR typedef enum { SIGDN_NORMALDISPLAY = 0x00000000, SIGDN_PARENTRELATIVEPARSING = 0x80018001, @@ -151,6 +157,7 @@ typedef enum { SIGDN_FILESYSPATH = 0x80058000, SIGDN_URL = 0x80068000 } SIGDN; +#endif typedef enum { FDAP_BOTTOM = 0x00000000, FDAP_TOP = 0x00000001 @@ -193,6 +200,7 @@ typedef struct { DECLARE_INTERFACE(IFileDialogEvents); +#ifndef __MINGW64_VERSION_MAJOR DECLARE_INTERFACE_(IShellItem, IUnknown) { STDMETHOD(BindToHandler)(THIS_ IBindCtx *pbc, REFGUID bhid, REFIID riid, void **ppv) PURE; @@ -201,6 +209,7 @@ DECLARE_INTERFACE_(IShellItem, IUnknown) STDMETHOD(GetAttributes)(THIS_ ULONG sfgaoMask, ULONG *psfgaoAttribs) PURE; STDMETHOD(Compare)(THIS_ IShellItem *psi, DWORD hint, int *piOrder) PURE; }; +#endif DECLARE_INTERFACE_(IShellItemFilter, IUnknown) { @@ -227,10 +236,12 @@ DECLARE_INTERFACE_(IShellItemArray, IUnknown) STDMETHOD(EnumItems)(THIS_ IEnumShellItems **ppenumShellItems) PURE; }; +#ifndef __MINGW64_VERSION_MAJOR DECLARE_INTERFACE_(IModalWindow, IUnknown) { STDMETHOD(Show)(THIS_ HWND hwndParent) PURE; }; +#endif DECLARE_INTERFACE_(IFileDialog, IModalWindow) { @@ -754,7 +765,7 @@ void QWindowsNativeFileDialogBase::setDirectory(const QString &directory) QString QWindowsNativeFileDialogBase::directory() const { IShellItem *item = 0; - return (SUCCEEDED(m_fileDialog) && item) ? + return (m_fileDialog && item) ? QWindowsNativeFileDialogBase::itemPath(item) : QString(); } |