guibuilder_pel7ppc64lebuilder0
5 years ago
58 changed files with 7122 additions and 15 deletions
@ -0,0 +1,3 @@ |
|||||||
|
[Qt] |
||||||
|
font="Sans Serif,10,-1,5,50,0,0,0,0,0" |
||||||
|
|
@ -1,9 +1,9 @@ |
|||||||
[Desktop Entry] |
[Desktop Entry] |
||||||
Name=Qt5 Assistant |
Name=Qt4 Assistant |
||||||
GenericName=Documentation viewer |
GenericName=Documentation viewer |
||||||
Comment=Shows Qt5 documentation and examples |
Comment=Shows Qt4 documentation and examples |
||||||
Exec=assistant-qt5 |
Exec=assistant-qt4 |
||||||
Icon=assistant-qt5 |
Icon=assistant |
||||||
Terminal=false |
Terminal=false |
||||||
Type=Application |
Type=Application |
||||||
Categories=Qt;Development;Documentation; |
Categories=Qt;Development;Documentation; |
||||||
|
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 3.2 KiB |
@ -0,0 +1,33 @@ |
|||||||
|
%_qt4 @@NAME@@ |
||||||
|
%_qt4_epoch @@EPOCH@@ |
||||||
|
%_qt4_version @@VERSION@@ |
||||||
|
%_qt4_evr @@EVR@@ |
||||||
|
%_qt48 %{_qt4_version} |
||||||
|
%_qt4_prefix %{_libdir}/qt4 |
||||||
|
%_qt4_bindir %{_qt4_prefix}/bin |
||||||
|
%_qt4_datadir %{_qt4_prefix} |
||||||
|
%_qt4_demosdir %{_qt4_prefix}/demos |
||||||
|
%_qt4_docdir %{_docdir}/qt4 |
||||||
|
%_qt4_examples %{_qt4_prefix}/examples |
||||||
|
%_qt4_examplesdir %{_qt4_prefix}/examples |
||||||
|
%_qt4_headerdir %{_includedir} |
||||||
|
%_qt4_importdir %{_qt4_prefix}/imports |
||||||
|
%_qt4_libdir %{_libdir} |
||||||
|
%_qt4_plugindir %{_qt4_prefix}/plugins |
||||||
|
%_qt4_qmake %{_qt4_bindir}/qmake |
||||||
|
%_qt4_sysconfdir %{_sysconfdir} |
||||||
|
%_qt4_translationdir %{_datadir}/qt4/translations |
||||||
|
|
||||||
|
%_qt4_ldflags %{?__global_ldflags} |
||||||
|
%_qt4_optflags %{optflags} |
||||||
|
|
||||||
|
%_qt4_qmake_flags \\\ |
||||||
|
QMAKE_CFLAGS_DEBUG="${CFLAGS:-%{_qt4_optflags}}" \\\ |
||||||
|
QMAKE_CFLAGS_RELEASE="${CFLAGS:-%{_qt4_optflags}}" \\\ |
||||||
|
QMAKE_CXXFLAGS_DEBUG="${CXXFLAGS:-%{_qt4_optflags}}" \\\ |
||||||
|
QMAKE_CXXFLAGS_RELEASE="${CXXFLAGS:-%{_qt4_optflags}}" \\\ |
||||||
|
QMAKE_LFLAGS_DEBUG="${LDFLAGS:-%{_qt4_ldflags}}" \\\ |
||||||
|
QMAKE_LFLAGS_RELEASE="${LDFLAGS:-%{_qt4_ldflags}}" \\\ |
||||||
|
QMAKE_STRIP= |
||||||
|
|
||||||
|
%qmake_qt4 %{_qt4_qmake} %{_qt4_qmake_flags} |
@ -0,0 +1,812 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp.poll 2014-03-30 15:36:48.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp 2014-03-31 18:04:05.958260978 -0500 |
||||||
|
@@ -158,13 +158,6 @@ static void qt_sa_sigchld_sigaction(int |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
-static inline void add_fd(int &nfds, int fd, fd_set *fdset) |
||||||
|
-{ |
||||||
|
- FD_SET(fd, fdset); |
||||||
|
- if ((fd) > nfds) |
||||||
|
- nfds = fd; |
||||||
|
-} |
||||||
|
- |
||||||
|
struct QProcessInfo { |
||||||
|
QProcess *process; |
||||||
|
int deathPipe; |
||||||
|
@@ -256,9 +249,9 @@ QProcessManager::~QProcessManager() |
||||||
|
void QProcessManager::run() |
||||||
|
{ |
||||||
|
forever { |
||||||
|
- fd_set readset; |
||||||
|
- FD_ZERO(&readset); |
||||||
|
- FD_SET(qt_qprocess_deadChild_pipe[0], &readset); |
||||||
|
+ pollfd fd; |
||||||
|
+ fd.fd = qt_qprocess_deadChild_pipe[0]; |
||||||
|
+ fd.events = POLLIN; |
||||||
|
|
||||||
|
#if defined (QPROCESS_DEBUG) |
||||||
|
qDebug() << "QProcessManager::run() waiting for children to die"; |
||||||
|
@@ -267,8 +260,8 @@ void QProcessManager::run() |
||||||
|
// block forever, or until activity is detected on the dead child |
||||||
|
// pipe. the only other peers are the SIGCHLD signal handler, and the |
||||||
|
// QProcessManager destructor. |
||||||
|
- int nselect = select(qt_qprocess_deadChild_pipe[0] + 1, &readset, 0, 0, 0); |
||||||
|
- if (nselect < 0) { |
||||||
|
+ int ret = qt_safe_poll(&fd, 1, -1, /* retry_eintr */ false); |
||||||
|
+ if (ret < 0) { |
||||||
|
if (errno == EINTR) |
||||||
|
continue; |
||||||
|
break; |
||||||
|
@@ -1027,17 +1020,6 @@ void QProcessPrivate::killProcess() |
||||||
|
::kill(pid_t(pid), SIGKILL); |
||||||
|
} |
||||||
|
|
||||||
|
-static int select_msecs(int nfds, fd_set *fdread, fd_set *fdwrite, int timeout) |
||||||
|
-{ |
||||||
|
- if (timeout < 0) |
||||||
|
- return qt_safe_select(nfds, fdread, fdwrite, 0, 0); |
||||||
|
- |
||||||
|
- struct timeval tv; |
||||||
|
- tv.tv_sec = timeout / 1000; |
||||||
|
- tv.tv_usec = (timeout % 1000) * 1000; |
||||||
|
- return qt_safe_select(nfds, fdread, fdwrite, 0, &tv); |
||||||
|
-} |
||||||
|
- |
||||||
|
/* |
||||||
|
Returns the difference between msecs and elapsed. If msecs is -1, |
||||||
|
however, -1 is returned. |
||||||
|
@@ -1060,10 +1042,10 @@ bool QProcessPrivate::waitForStarted(int |
||||||
|
childStartedPipe[0]); |
||||||
|
#endif |
||||||
|
|
||||||
|
- fd_set fds; |
||||||
|
- FD_ZERO(&fds); |
||||||
|
- FD_SET(childStartedPipe[0], &fds); |
||||||
|
- if (select_msecs(childStartedPipe[0] + 1, &fds, 0, msecs) == 0) { |
||||||
|
+ pollfd fd; |
||||||
|
+ fd.fd = childStartedPipe[0]; |
||||||
|
+ fd.events = POLLIN; |
||||||
|
+ if (qt_safe_poll(&fd, 1, msecs) == 0) { |
||||||
|
processError = QProcess::Timedout; |
||||||
|
q->setErrorString(QProcess::tr("Process operation timed out")); |
||||||
|
#if defined (QPROCESS_DEBUG) |
||||||
|
@@ -1079,6 +1061,47 @@ bool QProcessPrivate::waitForStarted(int |
||||||
|
return startedEmitted; |
||||||
|
} |
||||||
|
|
||||||
|
+class QProcessFDSet { |
||||||
|
+ pollfd fds[5]; |
||||||
|
+ |
||||||
|
+ static size_t size() |
||||||
|
+ { |
||||||
|
+ return sizeof(fds)/sizeof(fds[0]); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+public: |
||||||
|
+ QProcessFDSet(QProcessPrivate &proc) |
||||||
|
+ { |
||||||
|
+ for (size_t i = 0; i < size(); ++i) { |
||||||
|
+ fds[i].fd = -1; |
||||||
|
+ fds[i].events = POLLIN; |
||||||
|
+ } |
||||||
|
+ death().fd = proc.deathPipe[0]; |
||||||
|
+ |
||||||
|
+ if (proc.processState == QProcess::Starting) |
||||||
|
+ started().fd = proc.childStartedPipe[0]; |
||||||
|
+ |
||||||
|
+ stdout().fd = proc.stdoutChannel.pipe[0]; |
||||||
|
+ stderr().fd = proc.stderrChannel.pipe[0]; |
||||||
|
+ |
||||||
|
+ if (!proc.writeBuffer.isEmpty()) { |
||||||
|
+ stdin().fd = proc.stdinChannel.pipe[1]; |
||||||
|
+ stdin().events = POLLOUT; |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ int poll(int timeout) |
||||||
|
+ { |
||||||
|
+ return qt_safe_poll(fds, size(), timeout); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ pollfd &death() { return fds[0]; } |
||||||
|
+ pollfd &started() { return fds[1]; } |
||||||
|
+ pollfd &stdout() { return fds[2]; } |
||||||
|
+ pollfd &stderr() { return fds[3]; } |
||||||
|
+ pollfd &stdin() { return fds[4]; } |
||||||
|
+}; |
||||||
|
+ |
||||||
|
bool QProcessPrivate::waitForReadyRead(int msecs) |
||||||
|
{ |
||||||
|
Q_Q(QProcess); |
||||||
|
@@ -1090,28 +1113,9 @@ bool QProcessPrivate::waitForReadyRead(i |
||||||
|
stopWatch.start(); |
||||||
|
|
||||||
|
forever { |
||||||
|
- fd_set fdread; |
||||||
|
- fd_set fdwrite; |
||||||
|
- |
||||||
|
- FD_ZERO(&fdread); |
||||||
|
- FD_ZERO(&fdwrite); |
||||||
|
- |
||||||
|
- int nfds = deathPipe[0]; |
||||||
|
- FD_SET(deathPipe[0], &fdread); |
||||||
|
- |
||||||
|
- if (processState == QProcess::Starting) |
||||||
|
- add_fd(nfds, childStartedPipe[0], &fdread); |
||||||
|
- |
||||||
|
- if (stdoutChannel.pipe[0] != -1) |
||||||
|
- add_fd(nfds, stdoutChannel.pipe[0], &fdread); |
||||||
|
- if (stderrChannel.pipe[0] != -1) |
||||||
|
- add_fd(nfds, stderrChannel.pipe[0], &fdread); |
||||||
|
- |
||||||
|
- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1) |
||||||
|
- add_fd(nfds, stdinChannel.pipe[1], &fdwrite); |
||||||
|
- |
||||||
|
+ QProcessFDSet fdset(*this); |
||||||
|
int timeout = qt_timeout_value(msecs, stopWatch.elapsed()); |
||||||
|
- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout); |
||||||
|
+ int ret = fdset.poll(timeout); |
||||||
|
if (ret < 0) { |
||||||
|
break; |
||||||
|
} |
||||||
|
@@ -1121,18 +1125,18 @@ bool QProcessPrivate::waitForReadyRead(i |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) { |
||||||
|
+ if (qt_readable(fdset.started())) { |
||||||
|
if (!_q_startupNotification()) |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
bool readyReadEmitted = false; |
||||||
|
- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread)) { |
||||||
|
+ if (qt_readable(fdset.stdout())) { |
||||||
|
bool canRead = _q_canReadStandardOutput(); |
||||||
|
if (processChannel == QProcess::StandardOutput && canRead) |
||||||
|
readyReadEmitted = true; |
||||||
|
} |
||||||
|
- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread)) { |
||||||
|
+ if (qt_readable(fdset.stderr())) { |
||||||
|
bool canRead = _q_canReadStandardError(); |
||||||
|
if (processChannel == QProcess::StandardError && canRead) |
||||||
|
readyReadEmitted = true; |
||||||
|
@@ -1140,13 +1144,13 @@ bool QProcessPrivate::waitForReadyRead(i |
||||||
|
if (readyReadEmitted) |
||||||
|
return true; |
||||||
|
|
||||||
|
- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite)) |
||||||
|
+ if (qt_writable(fdset.stdin())) |
||||||
|
_q_canWrite(); |
||||||
|
|
||||||
|
- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) { |
||||||
|
+ if (qt_readable(fdset.death())) { |
||||||
|
if (_q_processDied()) |
||||||
|
return false; |
||||||
|
- } |
||||||
|
+ } |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
@@ -1162,29 +1166,9 @@ bool QProcessPrivate::waitForBytesWritte |
||||||
|
stopWatch.start(); |
||||||
|
|
||||||
|
while (!writeBuffer.isEmpty()) { |
||||||
|
- fd_set fdread; |
||||||
|
- fd_set fdwrite; |
||||||
|
- |
||||||
|
- FD_ZERO(&fdread); |
||||||
|
- FD_ZERO(&fdwrite); |
||||||
|
- |
||||||
|
- int nfds = deathPipe[0]; |
||||||
|
- FD_SET(deathPipe[0], &fdread); |
||||||
|
- |
||||||
|
- if (processState == QProcess::Starting) |
||||||
|
- add_fd(nfds, childStartedPipe[0], &fdread); |
||||||
|
- |
||||||
|
- if (stdoutChannel.pipe[0] != -1) |
||||||
|
- add_fd(nfds, stdoutChannel.pipe[0], &fdread); |
||||||
|
- if (stderrChannel.pipe[0] != -1) |
||||||
|
- add_fd(nfds, stderrChannel.pipe[0], &fdread); |
||||||
|
- |
||||||
|
- |
||||||
|
- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1) |
||||||
|
- add_fd(nfds, stdinChannel.pipe[1], &fdwrite); |
||||||
|
- |
||||||
|
+ QProcessFDSet fdset(*this); |
||||||
|
int timeout = qt_timeout_value(msecs, stopWatch.elapsed()); |
||||||
|
- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout); |
||||||
|
+ int ret = fdset.poll(timeout); |
||||||
|
if (ret < 0) { |
||||||
|
break; |
||||||
|
} |
||||||
|
@@ -1195,24 +1179,24 @@ bool QProcessPrivate::waitForBytesWritte |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) { |
||||||
|
+ if (qt_readable(fdset.started())) { |
||||||
|
if (!_q_startupNotification()) |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite)) |
||||||
|
+ if (qt_writable(fdset.stdin())) |
||||||
|
return _q_canWrite(); |
||||||
|
|
||||||
|
- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread)) |
||||||
|
+ if (qt_readable(fdset.stdout())) |
||||||
|
_q_canReadStandardOutput(); |
||||||
|
|
||||||
|
- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread)) |
||||||
|
+ if (qt_readable(fdset.stderr())) |
||||||
|
_q_canReadStandardError(); |
||||||
|
|
||||||
|
- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) { |
||||||
|
- if (_q_processDied()) |
||||||
|
- return false; |
||||||
|
- } |
||||||
|
+ if (qt_readable(fdset.death())) { |
||||||
|
+ if (_q_processDied()) |
||||||
|
+ return false; |
||||||
|
+ } |
||||||
|
} |
||||||
|
|
||||||
|
return false; |
||||||
|
@@ -1229,29 +1213,9 @@ bool QProcessPrivate::waitForFinished(in |
||||||
|
stopWatch.start(); |
||||||
|
|
||||||
|
forever { |
||||||
|
- fd_set fdread; |
||||||
|
- fd_set fdwrite; |
||||||
|
- int nfds = -1; |
||||||
|
- |
||||||
|
- FD_ZERO(&fdread); |
||||||
|
- FD_ZERO(&fdwrite); |
||||||
|
- |
||||||
|
- if (processState == QProcess::Starting) |
||||||
|
- add_fd(nfds, childStartedPipe[0], &fdread); |
||||||
|
- |
||||||
|
- if (stdoutChannel.pipe[0] != -1) |
||||||
|
- add_fd(nfds, stdoutChannel.pipe[0], &fdread); |
||||||
|
- if (stderrChannel.pipe[0] != -1) |
||||||
|
- add_fd(nfds, stderrChannel.pipe[0], &fdread); |
||||||
|
- |
||||||
|
- if (processState == QProcess::Running) |
||||||
|
- add_fd(nfds, deathPipe[0], &fdread); |
||||||
|
- |
||||||
|
- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1) |
||||||
|
- add_fd(nfds, stdinChannel.pipe[1], &fdwrite); |
||||||
|
- |
||||||
|
+ QProcessFDSet fdset(*this); |
||||||
|
int timeout = qt_timeout_value(msecs, stopWatch.elapsed()); |
||||||
|
- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout); |
||||||
|
+ int ret = fdset.poll(timeout); |
||||||
|
if (ret < 0) { |
||||||
|
break; |
||||||
|
} |
||||||
|
@@ -1261,20 +1225,20 @@ bool QProcessPrivate::waitForFinished(in |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) { |
||||||
|
+ if (qt_readable(fdset.started())) { |
||||||
|
if (!_q_startupNotification()) |
||||||
|
return false; |
||||||
|
} |
||||||
|
- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite)) |
||||||
|
+ if (qt_writable(fdset.stdin())) |
||||||
|
_q_canWrite(); |
||||||
|
|
||||||
|
- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread)) |
||||||
|
+ if (qt_readable(fdset.stdout())) |
||||||
|
_q_canReadStandardOutput(); |
||||||
|
|
||||||
|
- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread)) |
||||||
|
+ if (qt_readable(fdset.stderr())) |
||||||
|
_q_canReadStandardError(); |
||||||
|
|
||||||
|
- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) { |
||||||
|
+ if (qt_readable(fdset.death())) { |
||||||
|
if (_q_processDied()) |
||||||
|
return true; |
||||||
|
} |
||||||
|
@@ -1284,10 +1248,10 @@ bool QProcessPrivate::waitForFinished(in |
||||||
|
|
||||||
|
bool QProcessPrivate::waitForWrite(int msecs) |
||||||
|
{ |
||||||
|
- fd_set fdwrite; |
||||||
|
- FD_ZERO(&fdwrite); |
||||||
|
- FD_SET(stdinChannel.pipe[1], &fdwrite); |
||||||
|
- return select_msecs(stdinChannel.pipe[1] + 1, 0, &fdwrite, msecs < 0 ? 0 : msecs) == 1; |
||||||
|
+ pollfd fd; |
||||||
|
+ fd.fd = stdinChannel.pipe[1]; |
||||||
|
+ fd.events = POLLIN; |
||||||
|
+ return qt_safe_poll(&fd, 1, msecs); |
||||||
|
} |
||||||
|
|
||||||
|
void QProcessPrivate::findExitCode() |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp.poll 2014-03-30 15:36:48.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp 2014-03-31 18:01:59.369715403 -0500 |
||||||
|
@@ -99,4 +99,165 @@ int qt_safe_select(int nfds, fd_set *fdr |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
+#ifndef Q_OS_VXWORKS |
||||||
|
+ |
||||||
|
+int qt_safe_poll(struct pollfd *fds, int nfds, int timeout_ms, bool retry_eintr) |
||||||
|
+{ |
||||||
|
+ if (nfds == 0) |
||||||
|
+ return 0; |
||||||
|
+ if (nfds < 0) { |
||||||
|
+ errno = EINVAL; |
||||||
|
+ return -1; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ // Retry on ret == 0 if the deadline has not yet passed because |
||||||
|
+ // Linux can return early from the syscall, without setting EINTR. |
||||||
|
+ if (timeout_ms < 0) { |
||||||
|
+ forever { |
||||||
|
+ int ret = ::poll(fds, nfds, -1); |
||||||
|
+ if (ret > 0) |
||||||
|
+ return ret; |
||||||
|
+ if (retry_eintr) { |
||||||
|
+ if (ret == 0 || ret == -1 && errno == EINTR) { |
||||||
|
+ continue; |
||||||
|
+ } else { |
||||||
|
+ return -1; |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ if (ret == 0) { |
||||||
|
+ errno = EINTR; |
||||||
|
+ return -1; |
||||||
|
+ } |
||||||
|
+ return ret; |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ timeval previous = qt_gettime(); |
||||||
|
+ timeval deadline = previous; |
||||||
|
+ deadline.tv_sec += timeout_ms / 1000; |
||||||
|
+ deadline.tv_usec += (timeout_ms % 1000) * 1000; |
||||||
|
+ if (deadline.tv_usec >= 1000000) { |
||||||
|
+ ++deadline.tv_sec; |
||||||
|
+ deadline.tv_usec -= 1000000; |
||||||
|
+ } |
||||||
|
+ int remaining = timeout_ms; |
||||||
|
+ |
||||||
|
+ forever { |
||||||
|
+ int ret = ::poll(fds, nfds, remaining); |
||||||
|
+ if (ret > 0) |
||||||
|
+ return ret; |
||||||
|
+ timeval now = qt_gettime(); |
||||||
|
+ if ((now.tv_sec > deadline.tv_sec // past deadline |
||||||
|
+ || (now.tv_sec == deadline.tv_sec |
||||||
|
+ && now.tv_usec >= deadline.tv_usec)) |
||||||
|
+ || (now.tv_sec < previous.tv_sec // time warp |
||||||
|
+ || (now.tv_sec == previous.tv_sec |
||||||
|
+ && now.tv_usec < previous.tv_usec)) |
||||||
|
+ || (ret < 0 && (errno != EINTR || !retry_eintr))) // other error |
||||||
|
+ return ret; |
||||||
|
+ if (ret == 0 && !retry_eintr) { |
||||||
|
+ errno = EINTR; |
||||||
|
+ return -1; |
||||||
|
+ } |
||||||
|
+ remaining = (deadline.tv_sec - now.tv_sec) * 1000 |
||||||
|
+ + (deadline.tv_usec - now.tv_usec) / 1000; |
||||||
|
+ previous = now; |
||||||
|
+ } |
||||||
|
+} |
||||||
|
+ |
||||||
|
+#else |
||||||
|
+ |
||||||
|
+// Poll emulation for VxWorks. |
||||||
|
+ |
||||||
|
+static int mark_bad_descriptors(pollfd *fds, int nfds) |
||||||
|
+{ |
||||||
|
+ fd_set r; |
||||||
|
+ FD_ZERO(&r); |
||||||
|
+ struct timeval tv; |
||||||
|
+ tv.tv_sec = 0; |
||||||
|
+ tv.tv_usec = 0; |
||||||
|
+ int ret = 0; |
||||||
|
+ |
||||||
|
+ // Check each descriptor invidually for badness. |
||||||
|
+ for (int i = 0; i < nfds; ++i) { |
||||||
|
+ pollfd &fd(fds[i]); |
||||||
|
+ if (fd.fd >= 0) { |
||||||
|
+ FD_SET(fd.fd, &r); |
||||||
|
+ int ret = qt_safe_select(fd.fd + 1, &r, NULL, NULL, &tv); |
||||||
|
+ FD_CLR(fd.fd, &r); |
||||||
|
+ if (ret < 0 && errno == EBADF) { |
||||||
|
+ fd.revents = POLLNVAL; |
||||||
|
+ ++ret; |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ Q_ASSERT(ret > 0); |
||||||
|
+ return ret; |
||||||
|
+} |
||||||
|
+ |
||||||
|
+int qt_safe_poll(pollfd *fds, int nfds, int timeout, bool retry_eintr) |
||||||
|
+{ |
||||||
|
+ fd_set r, w; |
||||||
|
+ FD_ZERO(&r); |
||||||
|
+ FD_ZERO(&w); |
||||||
|
+ int maxfd = -1; |
||||||
|
+ |
||||||
|
+ // Extract the watched descriptors. |
||||||
|
+ for (int i = 0; i < nfds; ++i) { |
||||||
|
+ pollfd &fd(fds[i]); |
||||||
|
+ if (fd.fd >= 0 && fd.fd < FD_SETSIZE) { |
||||||
|
+ if (fd.events & POLLIN) { |
||||||
|
+ FD_SET(fd.fd, &r); |
||||||
|
+ if (fd.fd > maxfd) |
||||||
|
+ maxfd = fd.fd; |
||||||
|
+ } |
||||||
|
+ if (fd.events & POLLOUT) { |
||||||
|
+ FD_SET(fd.fd, &w); |
||||||
|
+ if (fd.fd > maxfd) |
||||||
|
+ maxfd = fd.fd; |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ // If timeout is negative, wait indefinitely for activity. |
||||||
|
+ timeval tv; |
||||||
|
+ timeval *ptv; |
||||||
|
+ if (timeout >= 0) { |
||||||
|
+ tv.tv_sec = timeout / 1000; |
||||||
|
+ tv.tv_usec = (timeout % 1000) * 1000; |
||||||
|
+ ptv = &tv; |
||||||
|
+ } else |
||||||
|
+ ptv = NULL; |
||||||
|
+ |
||||||
|
+ int ret; |
||||||
|
+ if (retry_eintr) |
||||||
|
+ ret = qt_safe_select(maxfd + 1, &r, &w, NULL, ptv); |
||||||
|
+ else |
||||||
|
+ ret = ::select(maxfd + 1, &r, &w, NULL, ptv); |
||||||
|
+ if (ret < 0 && errno == EBADF) { |
||||||
|
+ return mark_bad_descriptors(fds, nfds); |
||||||
|
+ } |
||||||
|
+ if (ret <= 0) |
||||||
|
+ return ret; |
||||||
|
+ |
||||||
|
+ // Set the revents flags. |
||||||
|
+ ret = 0; |
||||||
|
+ for (int i = 0; i < nfds; ++i) { |
||||||
|
+ pollfd &fd(fds[i]); |
||||||
|
+ fd.revents = 0; |
||||||
|
+ if (fd.fd >= 0 && fd.fd < FD_SETSIZE) { |
||||||
|
+ if ((fd.events & POLLIN) && FD_ISSET(fd.fd, &r)) |
||||||
|
+ fd.revents |= POLLIN; |
||||||
|
+ if ((fd.events & POLLOUT) && FD_ISSET(fd.fd, &w)) |
||||||
|
+ fd.revents |= POLLOUT; |
||||||
|
+ if (fd.revents) |
||||||
|
+ ++ret; |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ Q_ASSERT(ret > 0); |
||||||
|
+ return ret; |
||||||
|
+} |
||||||
|
+ |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
QT_END_NAMESPACE |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h.poll qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h.poll 2014-03-30 15:36:48.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h 2014-03-31 18:01:59.370715392 -0500 |
||||||
|
@@ -345,9 +345,42 @@ static inline pid_t qt_safe_waitpid(pid_ |
||||||
|
|
||||||
|
timeval qt_gettime(); // in qelapsedtimer_mac.cpp or qtimestamp_unix.cpp |
||||||
|
|
||||||
|
+// Deprecated due to FD_SETSIZE limitation, use qt_safe_poll instead. |
||||||
|
Q_CORE_EXPORT int qt_safe_select(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept, |
||||||
|
const struct timeval *tv); |
||||||
|
|
||||||
|
+#ifndef Q_OS_VXWORKS |
||||||
|
+#include <poll.h> |
||||||
|
+#else |
||||||
|
+ |
||||||
|
+// Poll emulation for VxWorks. |
||||||
|
+ |
||||||
|
+struct pollfd { |
||||||
|
+ int fd; |
||||||
|
+ short events; |
||||||
|
+ short revents; |
||||||
|
+}; |
||||||
|
+ |
||||||
|
+#define POLLIN 1 |
||||||
|
+#define POLLOUT 2 |
||||||
|
+#define POLLERR 4 |
||||||
|
+#define POLLHUP 8 |
||||||
|
+#define POLLNVAL 16 |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
+inline bool qt_readable(const pollfd &fd) |
||||||
|
+{ |
||||||
|
+ return fd.fd >= 0 && (fd.revents & (POLLIN | POLLHUP | POLLERR | POLLNVAL)) != 0; |
||||||
|
+} |
||||||
|
+ |
||||||
|
+inline bool qt_writable(const pollfd &fd) |
||||||
|
+{ |
||||||
|
+ return fd.fd >= 0 && (fd.revents & (POLLOUT | POLLHUP | POLLERR | POLLNVAL)) != 0; |
||||||
|
+} |
||||||
|
+ |
||||||
|
+Q_CORE_EXPORT int qt_safe_poll(pollfd *fds, int nfds, int timeout, |
||||||
|
+ bool retry_eintr = true); |
||||||
|
+ |
||||||
|
// according to X/OPEN we have to define semun ourselves |
||||||
|
// we use prefix as on some systems sem.h will have it |
||||||
|
struct semid_ds; |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp 2014-03-31 18:01:59.370715392 -0500 |
||||||
|
@@ -208,16 +208,11 @@ void QLocalServerPrivate::_q_onNewConnec |
||||||
|
|
||||||
|
void QLocalServerPrivate::waitForNewConnection(int msec, bool *timedOut) |
||||||
|
{ |
||||||
|
- fd_set readfds; |
||||||
|
- FD_ZERO(&readfds); |
||||||
|
- FD_SET(listenSocket, &readfds); |
||||||
|
+ struct pollfd fd; |
||||||
|
+ fd.fd = listenSocket; |
||||||
|
+ fd.events = POLLIN; |
||||||
|
|
||||||
|
- timeval timeout; |
||||||
|
- timeout.tv_sec = msec / 1000; |
||||||
|
- timeout.tv_usec = (msec % 1000) * 1000; |
||||||
|
- |
||||||
|
- int result = -1; |
||||||
|
- result = qt_safe_select(listenSocket + 1, &readfds, 0, 0, (msec == -1) ? 0 : &timeout); |
||||||
|
+ int result = qt_safe_poll(&fd, 1, msec); |
||||||
|
if (-1 == result) { |
||||||
|
setError(QLatin1String("QLocalServer::waitForNewConnection")); |
||||||
|
closeServer(); |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp 2014-03-31 18:01:59.370715392 -0500 |
||||||
|
@@ -56,10 +56,6 @@ |
||||||
|
#include <qdebug.h> |
||||||
|
#include <qelapsedtimer.h> |
||||||
|
|
||||||
|
-#ifdef Q_OS_VXWORKS |
||||||
|
-# include <selectLib.h> |
||||||
|
-#endif |
||||||
|
- |
||||||
|
#define QT_CONNECT_TIMEOUT 30000 |
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE |
||||||
|
@@ -520,32 +516,17 @@ bool QLocalSocket::waitForConnected(int |
||||||
|
if (state() != ConnectingState) |
||||||
|
return (state() == ConnectedState); |
||||||
|
|
||||||
|
- fd_set fds; |
||||||
|
- FD_ZERO(&fds); |
||||||
|
- FD_SET(d->connectingSocket, &fds); |
||||||
|
- |
||||||
|
- timeval timeout; |
||||||
|
- timeout.tv_sec = msec / 1000; |
||||||
|
- timeout.tv_usec = (msec % 1000) * 1000; |
||||||
|
- |
||||||
|
- // timeout can not be 0 or else select will return an error. |
||||||
|
- if (0 == msec) |
||||||
|
- timeout.tv_usec = 1000; |
||||||
|
+ pollfd fd; |
||||||
|
+ fd.fd = d->connectingSocket; |
||||||
|
+ fd.events = POLLIN | POLLOUT; |
||||||
|
|
||||||
|
int result = -1; |
||||||
|
// on Linux timeout will be updated by select, but _not_ on other systems. |
||||||
|
QElapsedTimer timer; |
||||||
|
+ int remaining = msec; |
||||||
|
timer.start(); |
||||||
|
- while (state() == ConnectingState |
||||||
|
- && (-1 == msec || timer.elapsed() < msec)) { |
||||||
|
-#ifdef Q_OS_SYMBIAN |
||||||
|
- // On Symbian, ready-to-write is signaled when non-blocking socket |
||||||
|
- // connect is finised. Is ready-to-read really used on other |
||||||
|
- // UNIX paltforms when using non-blocking AF_UNIX socket? |
||||||
|
- result = ::select(d->connectingSocket + 1, 0, &fds, 0, &timeout); |
||||||
|
-#else |
||||||
|
- result = ::select(d->connectingSocket + 1, &fds, 0, 0, &timeout); |
||||||
|
-#endif |
||||||
|
+ while (state() == ConnectingState) { |
||||||
|
+ result = qt_safe_poll(&fd, 1, remaining, /* retry_eintr */ false); |
||||||
|
if (-1 == result && errno != EINTR) { |
||||||
|
d->errorOccurred( QLocalSocket::UnknownSocketError, |
||||||
|
QLatin1String("QLocalSocket::waitForConnected")); |
||||||
|
@@ -553,6 +534,11 @@ bool QLocalSocket::waitForConnected(int |
||||||
|
} |
||||||
|
if (result > 0) |
||||||
|
d->_q_connectToSocket(); |
||||||
|
+ if (msec >= 0) { |
||||||
|
+ remaining = timer.elapsed() - msec; |
||||||
|
+ if (remaining < 0) |
||||||
|
+ break; |
||||||
|
+ } |
||||||
|
} |
||||||
|
|
||||||
|
return (state() == ConnectedState); |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp 2014-03-31 18:01:59.371715381 -0500 |
||||||
|
@@ -1068,48 +1068,40 @@ qint64 QNativeSocketEnginePrivate::nativ |
||||||
|
|
||||||
|
int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool selectForRead) const |
||||||
|
{ |
||||||
|
- fd_set fds; |
||||||
|
- FD_ZERO(&fds); |
||||||
|
- FD_SET(socketDescriptor, &fds); |
||||||
|
- |
||||||
|
- struct timeval tv; |
||||||
|
- tv.tv_sec = timeout / 1000; |
||||||
|
- tv.tv_usec = (timeout % 1000) * 1000; |
||||||
|
- |
||||||
|
- int retval; |
||||||
|
- if (selectForRead) |
||||||
|
- retval = qt_safe_select(socketDescriptor + 1, &fds, 0, 0, timeout < 0 ? 0 : &tv); |
||||||
|
- else |
||||||
|
- retval = qt_safe_select(socketDescriptor + 1, 0, &fds, 0, timeout < 0 ? 0 : &tv); |
||||||
|
- |
||||||
|
- return retval; |
||||||
|
+ struct pollfd fd; |
||||||
|
+ fd.fd = socketDescriptor; |
||||||
|
+ if (selectForRead) { |
||||||
|
+ fd.events = POLLIN; |
||||||
|
+ } else { |
||||||
|
+ fd.events = POLLOUT; |
||||||
|
+ } |
||||||
|
+ return qt_safe_poll(&fd, 1, timeout); |
||||||
|
} |
||||||
|
|
||||||
|
int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool checkRead, bool checkWrite, |
||||||
|
bool *selectForRead, bool *selectForWrite) const |
||||||
|
{ |
||||||
|
- fd_set fdread; |
||||||
|
- FD_ZERO(&fdread); |
||||||
|
+ struct pollfd fd; |
||||||
|
+ fd.fd = socketDescriptor; |
||||||
|
if (checkRead) |
||||||
|
- FD_SET(socketDescriptor, &fdread); |
||||||
|
- |
||||||
|
- fd_set fdwrite; |
||||||
|
- FD_ZERO(&fdwrite); |
||||||
|
+ fd.events = POLLIN; |
||||||
|
+ else |
||||||
|
+ fd.events = 0; |
||||||
|
if (checkWrite) |
||||||
|
- FD_SET(socketDescriptor, &fdwrite); |
||||||
|
- |
||||||
|
- struct timeval tv; |
||||||
|
- tv.tv_sec = timeout / 1000; |
||||||
|
- tv.tv_usec = (timeout % 1000) * 1000; |
||||||
|
- |
||||||
|
- int ret; |
||||||
|
- ret = qt_safe_select(socketDescriptor + 1, &fdread, &fdwrite, 0, timeout < 0 ? 0 : &tv); |
||||||
|
- |
||||||
|
+ fd.events |= POLLOUT; |
||||||
|
+ int ret = qt_safe_poll(&fd, 1, timeout); |
||||||
|
if (ret <= 0) |
||||||
|
- return ret; |
||||||
|
- *selectForRead = FD_ISSET(socketDescriptor, &fdread); |
||||||
|
- *selectForWrite = FD_ISSET(socketDescriptor, &fdwrite); |
||||||
|
- |
||||||
|
+ return ret; |
||||||
|
+ bool r = (fd.revents & (POLLIN | POLLHUP | POLLERR)) != 0; |
||||||
|
+ bool w = (fd.revents & (POLLOUT | POLLHUP | POLLERR)) != 0; |
||||||
|
+ // Emulate the return value from select(2). |
||||||
|
+ ret = 0; |
||||||
|
+ if (r) |
||||||
|
+ ++ret; |
||||||
|
+ if (w) |
||||||
|
+ ++ret; |
||||||
|
+ *selectForRead = r; |
||||||
|
+ *selectForWrite = w; |
||||||
|
return ret; |
||||||
|
} |
||||||
|
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp 2014-03-31 18:01:59.371715381 -0500 |
||||||
|
@@ -68,6 +68,7 @@ static inline int qt_socket_socket(int d |
||||||
|
#endif |
||||||
|
|
||||||
|
#include "q3socketdevice.h" |
||||||
|
+#include "private/qcore_unix_p.h" |
||||||
|
|
||||||
|
#ifndef QT_NO_NETWORK |
||||||
|
|
||||||
|
@@ -588,19 +589,10 @@ Q_LONG Q3SocketDevice::waitForMore( int |
||||||
|
{ |
||||||
|
if ( !isValid() ) |
||||||
|
return -1; |
||||||
|
- if ( fd >= FD_SETSIZE ) |
||||||
|
- return -1; |
||||||
|
- |
||||||
|
- fd_set fds; |
||||||
|
- struct timeval tv; |
||||||
|
- |
||||||
|
- FD_ZERO( &fds ); |
||||||
|
- FD_SET( fd, &fds ); |
||||||
|
- |
||||||
|
- tv.tv_sec = msecs / 1000; |
||||||
|
- tv.tv_usec = (msecs % 1000) * 1000; |
||||||
|
|
||||||
|
- int rv = select( fd+1, &fds, 0, 0, msecs < 0 ? 0 : &tv ); |
||||||
|
+ pollfd pfd; |
||||||
|
+ pfd.fd = fd; |
||||||
|
+ int rv = qt_safe_poll(&pfd, 1, msecs, /* retry_eintr */ false); |
||||||
|
|
||||||
|
if ( rv < 0 ) |
||||||
|
return -1; |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp 2014-03-31 18:01:59.372715370 -0500 |
||||||
|
@@ -981,13 +981,10 @@ bool Q3Process::isRunning() const |
||||||
|
// On heavy processing, the socket notifier for the sigchild might not |
||||||
|
// have found time to fire yet. |
||||||
|
if ( d->procManager && d->procManager->sigchldFd[1] < FD_SETSIZE ) { |
||||||
|
- fd_set fds; |
||||||
|
- struct timeval tv; |
||||||
|
- FD_ZERO( &fds ); |
||||||
|
- FD_SET( d->procManager->sigchldFd[1], &fds ); |
||||||
|
- tv.tv_sec = 0; |
||||||
|
- tv.tv_usec = 0; |
||||||
|
- if ( ::select( d->procManager->sigchldFd[1]+1, &fds, 0, 0, &tv ) > 0 ) |
||||||
|
+ pollfd fd; |
||||||
|
+ fd.fd = d->procManager->sigchldFd[1]; |
||||||
|
+ fd.events = POLLIN; |
||||||
|
+ if ( qt_safe_poll(&fd, 1, 0, /* retry_eintr */ false) > 0 ) |
||||||
|
d->procManager->sigchldHnd( d->procManager->sigchldFd[1] ); |
||||||
|
} |
||||||
|
|
||||||
|
@@ -1124,29 +1121,21 @@ void Q3Process::socketRead( int fd ) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
- if ( fd < FD_SETSIZE ) { |
||||||
|
- fd_set fds; |
||||||
|
- struct timeval tv; |
||||||
|
- FD_ZERO( &fds ); |
||||||
|
- FD_SET( fd, &fds ); |
||||||
|
- tv.tv_sec = 0; |
||||||
|
- tv.tv_usec = 0; |
||||||
|
- while ( ::select( fd+1, &fds, 0, 0, &tv ) > 0 ) { |
||||||
|
- // prepare for the next round |
||||||
|
- FD_ZERO( &fds ); |
||||||
|
- FD_SET( fd, &fds ); |
||||||
|
- // read data |
||||||
|
- ba = new QByteArray( basize ); |
||||||
|
- n = ::read( fd, ba->data(), basize ); |
||||||
|
- if ( n > 0 ) { |
||||||
|
- ba->resize( n ); |
||||||
|
- buffer->append( ba ); |
||||||
|
- ba = 0; |
||||||
|
- } else { |
||||||
|
- delete ba; |
||||||
|
- ba = 0; |
||||||
|
- break; |
||||||
|
- } |
||||||
|
+ pollfd pfd; |
||||||
|
+ pfd.fd = fd; |
||||||
|
+ pfd.events = POLLIN; |
||||||
|
+ while (qt_safe_poll(&pfd, 1, 0)) { |
||||||
|
+ // read data |
||||||
|
+ ba = new QByteArray( basize ); |
||||||
|
+ n = ::read( fd, ba->data(), basize ); |
||||||
|
+ if ( n > 0 ) { |
||||||
|
+ ba->resize( n ); |
||||||
|
+ buffer->append( ba ); |
||||||
|
+ ba = 0; |
||||||
|
+ } else { |
||||||
|
+ delete ba; |
||||||
|
+ ba = 0; |
||||||
|
+ break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,238 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp.cupsEnumDests 2012-11-23 10:09:53.000000000 +0000 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp 2013-07-03 15:30:06.232936976 +0100 |
||||||
|
@@ -50,9 +50,19 @@ |
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE |
||||||
|
|
||||||
|
+typedef int (*CupsEnumDests)(unsigned flags, int msec, int *cancel, |
||||||
|
+ cups_ptype_t type, cups_ptype_t mask, |
||||||
|
+ cups_dest_cb_t cb, void *user_data); |
||||||
|
+typedef http_t * (*CupsConnectDest)(cups_dest_t *dest, unsigned flags, |
||||||
|
+ int msec, int *cancel, |
||||||
|
+ char *resource, size_t resourcesize, |
||||||
|
+ cups_dest_cb_t cb, void *user_data); |
||||||
|
+typedef int (*CupsCopyDest)(cups_dest_t *dest, int num_dests, |
||||||
|
+ cups_dest_t **dests); |
||||||
|
typedef int (*CupsGetDests)(cups_dest_t **dests); |
||||||
|
typedef void (*CupsFreeDests)(int num_dests, cups_dest_t *dests); |
||||||
|
typedef const char* (*CupsGetPPD)(const char *printer); |
||||||
|
+typedef const char* (*CupsGetPPD2)(http_t *http, const char *printer); |
||||||
|
typedef int (*CupsMarkOptions)(ppd_file_t *ppd, int num_options, cups_option_t *options); |
||||||
|
typedef ppd_file_t* (*PPDOpenFile)(const char *filename); |
||||||
|
typedef void (*PPDMarkDefaults)(ppd_file_t *ppd); |
||||||
|
@@ -66,12 +76,24 @@ typedef const char* (*CupsLangEncoding)( |
||||||
|
typedef int (*CupsAddOption)(const char *name, const char *value, int num_options, cups_option_t **options); |
||||||
|
typedef int (*CupsTempFd)(char *name, int len); |
||||||
|
typedef int (*CupsPrintFile)(const char * name, const char * filename, const char * title, int num_options, cups_option_t * options); |
||||||
|
+typedef int (*CupsPrintFile2)(http_t *http, const char *name, const char *filename, const char *title, int num_options, cups_option_t *options); |
||||||
|
+ |
||||||
|
+typedef struct |
||||||
|
+{ |
||||||
|
+ cups_dest_t *printers; |
||||||
|
+ int num_printers; |
||||||
|
+} EnumDestsContext; |
||||||
|
|
||||||
|
static bool cupsLoaded = false; |
||||||
|
static int qt_cups_num_printers = 0; |
||||||
|
+static cups_dest_t *qt_cups_printers = 0; |
||||||
|
+static CupsEnumDests _cupsEnumDests = 0; |
||||||
|
+static CupsConnectDest _cupsConnectDest = 0; |
||||||
|
+static CupsCopyDest _cupsCopyDest = 0; |
||||||
|
static CupsGetDests _cupsGetDests = 0; |
||||||
|
static CupsFreeDests _cupsFreeDests = 0; |
||||||
|
static CupsGetPPD _cupsGetPPD = 0; |
||||||
|
+static CupsGetPPD2 _cupsGetPPD2 = 0; |
||||||
|
static PPDOpenFile _ppdOpenFile = 0; |
||||||
|
static PPDMarkDefaults _ppdMarkDefaults = 0; |
||||||
|
static PPDClose _ppdClose = 0; |
||||||
|
@@ -84,14 +106,35 @@ static CupsLangEncoding _cupsLangEncodin |
||||||
|
static CupsAddOption _cupsAddOption = 0; |
||||||
|
static CupsTempFd _cupsTempFd = 0; |
||||||
|
static CupsPrintFile _cupsPrintFile = 0; |
||||||
|
+static CupsPrintFile2 _cupsPrintFile2 = 0; |
||||||
|
+ |
||||||
|
+static int enum_dest_cb (void *user_data, unsigned flags, cups_dest_t *dest) |
||||||
|
+{ |
||||||
|
+ EnumDestsContext *context = (EnumDestsContext *) user_data; |
||||||
|
+ |
||||||
|
+ if ((flags & (CUPS_DEST_FLAGS_UNCONNECTED | |
||||||
|
+ CUPS_DEST_FLAGS_REMOVED | |
||||||
|
+ CUPS_DEST_FLAGS_ERROR | |
||||||
|
+ CUPS_DEST_FLAGS_RESOLVING | |
||||||
|
+ CUPS_DEST_FLAGS_CONNECTING | |
||||||
|
+ CUPS_DEST_FLAGS_CANCELED)) == 0) |
||||||
|
+ context->num_printers = _cupsCopyDest (dest, context->num_printers, |
||||||
|
+ &context->printers); |
||||||
|
+ |
||||||
|
+ return 1; |
||||||
|
+} |
||||||
|
|
||||||
|
static void resolveCups() |
||||||
|
{ |
||||||
|
QLibrary cupsLib(QLatin1String("cups"), 2); |
||||||
|
if(cupsLib.load()) { |
||||||
|
+ _cupsEnumDests = (CupsEnumDests) cupsLib.resolve("cupsEnumDests"); |
||||||
|
+ _cupsConnectDest = (CupsConnectDest) cupsLib.resolve("cupsConnectDest"); |
||||||
|
+ _cupsCopyDest = (CupsCopyDest) cupsLib.resolve("cupsCopyDest"); |
||||||
|
_cupsGetDests = (CupsGetDests) cupsLib.resolve("cupsGetDests"); |
||||||
|
_cupsFreeDests = (CupsFreeDests) cupsLib.resolve("cupsFreeDests"); |
||||||
|
_cupsGetPPD = (CupsGetPPD) cupsLib.resolve("cupsGetPPD"); |
||||||
|
+ _cupsGetPPD2 = (CupsGetPPD2) cupsLib.resolve("cupsGetPPD2"); |
||||||
|
_cupsLangGet = (CupsLangGet) cupsLib.resolve("cupsLangGet"); |
||||||
|
_cupsLangEncoding = (CupsLangEncoding) cupsLib.resolve("cupsLangEncoding"); |
||||||
|
_ppdOpenFile = (PPDOpenFile) cupsLib.resolve("ppdOpenFile"); |
||||||
|
@@ -104,14 +147,27 @@ static void resolveCups() |
||||||
|
_cupsAddOption = (CupsAddOption) cupsLib.resolve("cupsAddOption"); |
||||||
|
_cupsTempFd = (CupsTempFd) cupsLib.resolve("cupsTempFd"); |
||||||
|
_cupsPrintFile = (CupsPrintFile) cupsLib.resolve("cupsPrintFile"); |
||||||
|
+ _cupsPrintFile2 = (CupsPrintFile2) cupsLib.resolve("cupsPrintFile2"); |
||||||
|
|
||||||
|
- if (_cupsGetDests && _cupsFreeDests) { |
||||||
|
- cups_dest_t *printers; |
||||||
|
+ if (_cupsEnumDests && _cupsCopyDest && |
||||||
|
+ _cupsConnectDest && _cupsGetPPD2 && |
||||||
|
+ _cupsPrintFile2) { |
||||||
|
+ EnumDestsContext context; |
||||||
|
+ context.printers = 0; |
||||||
|
+ context.num_printers = 0; |
||||||
|
+ _cupsEnumDests(0, -1, 0, 0, 0, |
||||||
|
+ enum_dest_cb, &context); |
||||||
|
+ |
||||||
|
+ qt_cups_printers = context.printers; |
||||||
|
+ qt_cups_num_printers = context.num_printers; |
||||||
|
+ } else if (_cupsGetDests && _cupsFreeDests) { |
||||||
|
+ cups_dest_t *printers; |
||||||
|
int num_printers = _cupsGetDests(&printers); |
||||||
|
- if (num_printers) |
||||||
|
- _cupsFreeDests(num_printers, printers); |
||||||
|
- qt_cups_num_printers = num_printers; |
||||||
|
- } |
||||||
|
+ |
||||||
|
+ if (num_printers) |
||||||
|
+ _cupsFreeDests(num_printers, printers); |
||||||
|
+ qt_cups_num_printers = num_printers; |
||||||
|
+ } |
||||||
|
} |
||||||
|
cupsLoaded = true; |
||||||
|
} |
||||||
|
@@ -134,7 +190,15 @@ QCUPSSupport::QCUPSSupport() |
||||||
|
return; |
||||||
|
|
||||||
|
// Update the available printer count |
||||||
|
- qt_cups_num_printers = prnCount = _cupsGetDests(&printers); |
||||||
|
+ if (qt_cups_printers && _cupsCopyDest) { |
||||||
|
+ int i; |
||||||
|
+ for (i = 0; i < qt_cups_num_printers; ++i) { |
||||||
|
+ prnCount = _cupsCopyDest (&qt_cups_printers[i], |
||||||
|
+ prnCount, |
||||||
|
+ &printers); |
||||||
|
+ } |
||||||
|
+ } else |
||||||
|
+ qt_cups_num_printers = prnCount = _cupsGetDests(&printers); |
||||||
|
|
||||||
|
for (int i = 0; i < prnCount; ++i) { |
||||||
|
if (printers[i].is_default) { |
||||||
|
@@ -188,7 +252,19 @@ const ppd_file_t* QCUPSSupport::setCurre |
||||||
|
currPPD = 0; |
||||||
|
page_sizes = 0; |
||||||
|
|
||||||
|
- const char *ppdFile = _cupsGetPPD(printers[index].name); |
||||||
|
+ const char *ppdFile = 0; |
||||||
|
+ if (_cupsConnectDest && _cupsGetPPD2) { |
||||||
|
+ char resource[HTTP_MAX_URI]; |
||||||
|
+ http_t *http = _cupsConnectDest (&printers[index], 0, -1, 0, |
||||||
|
+ resource, sizeof (resource), |
||||||
|
+ 0, 0); |
||||||
|
+ if (http) { |
||||||
|
+ char *name = strrchr (resource, '/'); |
||||||
|
+ if (name) |
||||||
|
+ ppdFile = _cupsGetPPD2 (http, ++name); |
||||||
|
+ } |
||||||
|
+ } else |
||||||
|
+ ppdFile = _cupsGetPPD(printers[index].name); |
||||||
|
|
||||||
|
if (!ppdFile) |
||||||
|
return 0; |
||||||
|
@@ -343,7 +419,29 @@ bool QCUPSSupport::printerHasPPD(const c |
||||||
|
{ |
||||||
|
if (!isAvailable()) |
||||||
|
return false; |
||||||
|
- const char *ppdFile = _cupsGetPPD(printerName); |
||||||
|
+ |
||||||
|
+ const char *ppdFile = 0; |
||||||
|
+ if (_cupsConnectDest && _cupsGetPPD2) { |
||||||
|
+ int i; |
||||||
|
+ for (i = 0; i < prnCount; ++i) |
||||||
|
+ if (!strcmp (printers[i].name, printerName)) |
||||||
|
+ break; |
||||||
|
+ |
||||||
|
+ if (i == prnCount) |
||||||
|
+ return false; |
||||||
|
+ |
||||||
|
+ char resource[HTTP_MAX_URI]; |
||||||
|
+ http_t *http = _cupsConnectDest (&printers[i], 0, -1, 0, |
||||||
|
+ resource, sizeof (resource), |
||||||
|
+ 0, 0); |
||||||
|
+ if (http) { |
||||||
|
+ char *name = strrchr (resource, '/'); |
||||||
|
+ if (name) |
||||||
|
+ ppdFile = _cupsGetPPD2 (http, ++name); |
||||||
|
+ } |
||||||
|
+ } else |
||||||
|
+ ppdFile = _cupsGetPPD(printerName); |
||||||
|
+ |
||||||
|
if (ppdFile) |
||||||
|
unlink(ppdFile); |
||||||
|
return (ppdFile != 0); |
||||||
|
@@ -394,6 +492,26 @@ QPair<int, QString> QCUPSSupport::tempFd |
||||||
|
int QCUPSSupport::printFile(const char * printerName, const char * filename, const char * title, |
||||||
|
int num_options, cups_option_t * options) |
||||||
|
{ |
||||||
|
+ if (_cupsConnectDest && _cupsPrintFile2) { |
||||||
|
+ int i; |
||||||
|
+ for (i = 0; i < prnCount; ++i) |
||||||
|
+ if (!strcmp (printers[i].name, printerName)) |
||||||
|
+ break; |
||||||
|
+ |
||||||
|
+ if (i != prnCount) { |
||||||
|
+ char resource[HTTP_MAX_URI]; |
||||||
|
+ http_t *http = _cupsConnectDest (&printers[i], 0, -1, 0, |
||||||
|
+ resource, sizeof (resource), |
||||||
|
+ 0, 0); |
||||||
|
+ if (http) { |
||||||
|
+ char *name = strrchr (resource, '/'); |
||||||
|
+ if (name) |
||||||
|
+ return _cupsPrintFile2 (http, ++name, filename, title, |
||||||
|
+ num_options, options); |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ |
||||||
|
return _cupsPrintFile(printerName, filename, title, num_options, options); |
||||||
|
} |
||||||
|
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h |
||||||
|
--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h.cupsEnumDests 2012-11-23 10:09:53.000000000 +0000 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h 2013-07-03 15:27:24.733343017 +0100 |
||||||
|
@@ -92,7 +92,7 @@ public: |
||||||
|
|
||||||
|
QStringList options() const; |
||||||
|
|
||||||
|
- static bool printerHasPPD(const char *printerName); |
||||||
|
+ bool printerHasPPD(const char *printerName); |
||||||
|
|
||||||
|
QString unicodeString(const char *s); |
||||||
|
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp.cupsEnumDests 2013-07-03 15:27:24.531342277 +0100 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp 2013-07-03 15:27:24.733343017 +0100 |
||||||
|
@@ -844,7 +844,7 @@ void QPrinter::setPrinterName(const QStr |
||||||
|
if(d->use_default_engine |
||||||
|
&& d->outputFormat == QPrinter::NativeFormat) { |
||||||
|
if (QCUPSSupport::cupsVersion() >= 10200 |
||||||
|
- && QCUPSSupport::printerHasPPD(name.toLocal8Bit().constData())) |
||||||
|
+ && QCUPSSupport().printerHasPPD(name.toLocal8Bit().constData())) |
||||||
|
setOutputFormat(QPrinter::PdfFormat); |
||||||
|
else |
||||||
|
setOutputFormat(QPrinter::PostScriptFormat); |
@ -0,0 +1,84 @@ |
|||||||
|
diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-11 16:55:22.000000000 +0100 |
||||||
|
+++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-28 04:34:16.000000000 +0100 |
||||||
|
@@ -569,6 +569,32 @@ |
||||||
|
void QPrintDialogPrivate::selectPrinter(QCUPSSupport *cups) |
||||||
|
{ |
||||||
|
options.duplex->setEnabled(cups && cups->ppdOption("Duplex")); |
||||||
|
+ |
||||||
|
+ if (cups) { |
||||||
|
+ const ppd_option_t* duplex = cups->ppdOption("Duplex"); |
||||||
|
+ if (duplex) { |
||||||
|
+ // copy default ppd duplex to qt dialog |
||||||
|
+ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0) |
||||||
|
+ options.duplexShort->setChecked(true); |
||||||
|
+ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0) |
||||||
|
+ options.duplexLong->setChecked(true); |
||||||
|
+ else |
||||||
|
+ options.noDuplex->setChecked(true); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ if (cups->currentPPD()) { |
||||||
|
+ // set default color |
||||||
|
+ if (cups->currentPPD()->color_device) |
||||||
|
+ options.color->setChecked(true); |
||||||
|
+ else |
||||||
|
+ options.grayscale->setChecked(true); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ // set collation |
||||||
|
+ const ppd_option_t *collate = cups->ppdOption("Collate"); |
||||||
|
+ if (collate) |
||||||
|
+ options.collate->setChecked(qstrcmp(collate->defchoice, "True")==0); |
||||||
|
+ } |
||||||
|
} |
||||||
|
#endif |
||||||
|
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp 2010-02-11 16:55:22.000000000 +0100 |
||||||
|
+++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp 2010-02-28 04:55:15.000000000 +0100 |
||||||
|
@@ -627,6 +627,44 @@ |
||||||
|
&& d_ptr->paintEngine->type() != QPaintEngine::MacPrinter) { |
||||||
|
setOutputFormat(QPrinter::PdfFormat); |
||||||
|
} |
||||||
|
+ |
||||||
|
+#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) |
||||||
|
+ // fill in defaults from ppd file |
||||||
|
+ QCUPSSupport cups; |
||||||
|
+ |
||||||
|
+ int printernum = -1; |
||||||
|
+ for (int i = 0; i < cups.availablePrintersCount(); i++) { |
||||||
|
+ if (printerName().toLocal8Bit() == cups.availablePrinters()[i].name) |
||||||
|
+ printernum = i; |
||||||
|
+ } |
||||||
|
+ if (printernum >= 0) { |
||||||
|
+ cups.setCurrentPrinter(printernum); |
||||||
|
+ |
||||||
|
+ const ppd_option_t* duplex = cups.ppdOption("Duplex"); |
||||||
|
+ if (duplex) { |
||||||
|
+ // copy default ppd duplex to qt dialog |
||||||
|
+ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0) |
||||||
|
+ setDuplex(DuplexShortSide); |
||||||
|
+ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0) |
||||||
|
+ setDuplex(DuplexLongSide); |
||||||
|
+ else |
||||||
|
+ setDuplex(DuplexNone); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ if (cups.currentPPD()) { |
||||||
|
+ // set default color |
||||||
|
+ if (cups.currentPPD()->color_device) |
||||||
|
+ setColorMode(Color); |
||||||
|
+ else |
||||||
|
+ setColorMode(GrayScale); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ // set collation |
||||||
|
+ const ppd_option_t *collate = cups.ppdOption("Collate"); |
||||||
|
+ if (collate) |
||||||
|
+ setCollateCopies(qstrcmp(collate->defchoice, "True")==0); |
||||||
|
+ } |
||||||
|
+#endif |
||||||
|
} |
||||||
|
|
||||||
|
/*! |
@ -0,0 +1,69 @@ |
|||||||
|
diff -ur qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck/src/gui/kernel/qguieventdispatcher_glib.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-06-02 04:03:15.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-12-08 22:22:38.000000000 +0100 |
||||||
|
@@ -76,7 +76,7 @@ |
||||||
|
GX11EventSource *source = reinterpret_cast<GX11EventSource *>(s); |
||||||
|
return (XEventsQueued(X11->display, QueuedAfterFlush) |
||||||
|
|| (!(source->flags & QEventLoop::ExcludeUserInputEvents) |
||||||
|
- && !source->d->queuedUserInputEvents.isEmpty())); |
||||||
|
+ && source->d && !source->d->queuedUserInputEvents.isEmpty())); |
||||||
|
} |
||||||
|
|
||||||
|
static gboolean x11EventSourceCheck(GSource *s) |
||||||
|
@@ -84,7 +84,7 @@ |
||||||
|
GX11EventSource *source = reinterpret_cast<GX11EventSource *>(s); |
||||||
|
return (XEventsQueued(X11->display, QueuedAfterFlush) |
||||||
|
|| (!(source->flags & QEventLoop::ExcludeUserInputEvents) |
||||||
|
- && !source->d->queuedUserInputEvents.isEmpty())); |
||||||
|
+ && source->d && !source->d->queuedUserInputEvents.isEmpty())); |
||||||
|
} |
||||||
|
|
||||||
|
static gboolean x11EventSourceDispatch(GSource *s, GSourceFunc callback, gpointer user_data) |
||||||
|
@@ -95,7 +95,7 @@ |
||||||
|
do { |
||||||
|
XEvent event; |
||||||
|
if (!(source->flags & QEventLoop::ExcludeUserInputEvents) |
||||||
|
- && !source->d->queuedUserInputEvents.isEmpty()) { |
||||||
|
+ && source->d && !source->d->queuedUserInputEvents.isEmpty()) { |
||||||
|
// process a pending user input event |
||||||
|
event = source->d->queuedUserInputEvents.takeFirst(); |
||||||
|
} else if (XEventsQueued(X11->display, QueuedAlready)) { |
||||||
|
@@ -112,7 +112,8 @@ |
||||||
|
case XKeyRelease: |
||||||
|
case EnterNotify: |
||||||
|
case LeaveNotify: |
||||||
|
- source->d->queuedUserInputEvents.append(event); |
||||||
|
+ if (source->d) |
||||||
|
+ source->d->queuedUserInputEvents.append(event); |
||||||
|
continue; |
||||||
|
|
||||||
|
case ClientMessage: |
||||||
|
@@ -127,7 +128,8 @@ |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
- source->d->queuedUserInputEvents.append(event); |
||||||
|
+ if (source->d) |
||||||
|
+ source->d->queuedUserInputEvents.append(event); |
||||||
|
continue; |
||||||
|
|
||||||
|
default: |
||||||
|
@@ -140,7 +142,7 @@ |
||||||
|
} |
||||||
|
|
||||||
|
// send through event filter |
||||||
|
- if (source->q->filterEvent(&event)) |
||||||
|
+ if (source->q && source->q->filterEvent(&event)) |
||||||
|
continue; |
||||||
|
|
||||||
|
if (qApp->x11ProcessEvent(&event) == 1) |
||||||
|
@@ -152,7 +154,8 @@ |
||||||
|
|
||||||
|
out: |
||||||
|
|
||||||
|
- source->d->runTimersOnceWithNormalPriority(); |
||||||
|
+ if (source->d) |
||||||
|
+ source->d->runTimersOnceWithNormalPriority(); |
||||||
|
|
||||||
|
if (callback) |
||||||
|
callback(user_data); |
@ -0,0 +1,25 @@ |
|||||||
|
--- qt-everywhere-opensource-src-4.8.5/configure 2013-10-10 00:40:17.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/configure 2013-10-10 13:47:49.000000000 +0200 |
||||||
|
@@ -3235,6 +3235,12 @@ if [ -z "${CFG_HOST_ARCH}" ]; then |
||||||
|
fi |
||||||
|
CFG_HOST_ARCH=powerpc |
||||||
|
;; |
||||||
|
+ ppc64le:*:*|*:ppc64le:*|*:*:ppc64le) |
||||||
|
+ if [ "$OPT_VERBOSE" = "yes" ]; then |
||||||
|
+ echo " 64-bit PowerPC little endian (ppc64le)" |
||||||
|
+ fi |
||||||
|
+ CFG_HOST_ARCH=powerpc |
||||||
|
+ ;; |
||||||
|
*:*:s390*) |
||||||
|
if [ "$OPT_VERBOSE" = "yes" ]; then |
||||||
|
echo " IBM S/390 (s390)" |
||||||
|
@@ -3299,6 +3305,9 @@ if [ "$PLATFORM" != "$XPLATFORM" -a "$CF |
||||||
|
arm*) |
||||||
|
CFG_ARCH=arm |
||||||
|
;; |
||||||
|
+ ppc64le) |
||||||
|
+ CFG_ARCH=powerpc |
||||||
|
+ ;; |
||||||
|
*) |
||||||
|
CFG_ARCH="$CFG_EMBEDDED" |
||||||
|
;; |
@ -0,0 +1,41 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037 qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h |
||||||
|
--- qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037 2011-10-03 22:44:32.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h 2011-10-15 14:25:52.238694974 -0500 |
||||||
|
@@ -769,26 +769,18 @@ Q_OUTOFLINE_TEMPLATE void QList<T>::clea |
||||||
|
template <typename T> |
||||||
|
Q_OUTOFLINE_TEMPLATE int QList<T>::removeAll(const T &_t) |
||||||
|
{ |
||||||
|
- int index = indexOf(_t); |
||||||
|
- if (index == -1) |
||||||
|
- return 0; |
||||||
|
- |
||||||
|
+ detachShared(); |
||||||
|
const T t = _t; |
||||||
|
- detach(); |
||||||
|
- |
||||||
|
- Node *i = reinterpret_cast<Node *>(p.at(index)); |
||||||
|
- Node *e = reinterpret_cast<Node *>(p.end()); |
||||||
|
- Node *n = i; |
||||||
|
- node_destruct(i); |
||||||
|
- while (++i != e) { |
||||||
|
- if (i->t() == t) |
||||||
|
- node_destruct(i); |
||||||
|
- else |
||||||
|
- *n++ = *i; |
||||||
|
- } |
||||||
|
- |
||||||
|
- int removedCount = e - n; |
||||||
|
- d->end -= removedCount; |
||||||
|
+ int removedCount=0, i=0; |
||||||
|
+ Node *n; |
||||||
|
+ while (i < p.size()) |
||||||
|
+ if ((n = reinterpret_cast<Node *>(p.at(i)))->t() == t) { |
||||||
|
+ node_destruct(n); |
||||||
|
+ p.remove(i); |
||||||
|
+ ++removedCount; |
||||||
|
+ } else { |
||||||
|
+ ++i; |
||||||
|
+ } |
||||||
|
return removedCount; |
||||||
|
} |
||||||
|
|
@ -0,0 +1,20 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h.s390-atomic qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h |
||||||
|
--- qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h.s390-atomic 2011-12-18 16:15:20.000000000 +0100 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h 2011-12-18 16:17:34.000000000 +0100 |
||||||
|
@@ -400,6 +400,16 @@ Q_INLINE_TEMPLATE T* QBasicAtomicPointer |
||||||
|
|
||||||
|
|
||||||
|
template <typename T> |
||||||
|
+Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd) |
||||||
|
+{ |
||||||
|
+#ifndef __s390x__ |
||||||
|
+ return (T *)__CS_OLD_LOOP(&_q_value, valueToAdd * sizeof(T), "ar", "", "bcr 15,0\n"); |
||||||
|
+#else |
||||||
|
+ return (T *)__CSG_OLD_LOOP(&_q_value, valueToAdd * sizeof(T), "agr", "", "bcr 15,0\n"); |
||||||
|
+#endif |
||||||
|
+} |
||||||
|
+ |
||||||
|
+template <typename T> |
||||||
|
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd) |
||||||
|
{ |
||||||
|
return fetchAndAddOrdered(valueToAdd); |
@ -0,0 +1,36 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf |
||||||
|
--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf 2011-05-25 13:39:38.789054074 +0200 |
||||||
|
@@ -12,6 +12,8 @@ QMAKE_INCREMENTAL_STYLE = sublib |
||||||
|
QMAKE_CFLAGS = -m32 |
||||||
|
QMAKE_LFLAGS = -m32 |
||||||
|
|
||||||
|
+QMAKE_CFLAGS_RELEASE += -O2 |
||||||
|
+ |
||||||
|
include(../common/linux.conf) |
||||||
|
include(../common/gcc-base-unix.conf) |
||||||
|
include(../common/g++-unix.conf) |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf |
||||||
|
--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf 2011-05-25 13:39:47.460747770 +0200 |
||||||
|
@@ -15,6 +15,8 @@ QMAKE_INCREMENTAL_STYLE = sublib |
||||||
|
QMAKE_CFLAGS = -m64 |
||||||
|
QMAKE_LFLAGS = -m64 |
||||||
|
|
||||||
|
+QMAKE_CFLAGS_RELEASE += -O2 |
||||||
|
+ |
||||||
|
include(../common/linux.conf) |
||||||
|
include(../common/gcc-base-unix.conf) |
||||||
|
include(../common/g++-unix.conf) |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf |
||||||
|
--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf 2011-05-25 13:39:26.630088814 +0200 |
||||||
|
@@ -9,6 +9,8 @@ CONFIG += qt warn_on release increment |
||||||
|
QT += core gui |
||||||
|
QMAKE_INCREMENTAL_STYLE = sublib |
||||||
|
|
||||||
|
+QMAKE_CFLAGS_RELEASE += -O2 |
||||||
|
+ |
||||||
|
include(../common/linux.conf) |
||||||
|
include(../common/gcc-base-unix.conf) |
||||||
|
include(../common/g++-unix.conf) |
@ -0,0 +1,12 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp.qtreeview-kpackagekit-crash qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp.qtreeview-kpackagekit-crash 2011-05-23 12:26:21.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp 2011-05-25 13:24:33.137315194 +0200 |
||||||
|
@@ -3215,7 +3215,7 @@ int QTreeViewPrivate::itemHeight(int ite |
||||||
|
return defaultItemHeight; |
||||||
|
if (viewItems.isEmpty()) |
||||||
|
return 0; |
||||||
|
- const QModelIndex &index = viewItems.at(item).index; |
||||||
|
+ QModelIndex index = viewItems.at(item).index; |
||||||
|
if (!index.isValid()) |
||||||
|
return 0; |
||||||
|
int height = viewItems.at(item).height; |
@ -0,0 +1,27 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp.linguist_qtmake-qt4 qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp.linguist_qtmake-qt4 2012-04-26 21:45:50.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp 2012-05-29 12:17:03.416561535 +0200 |
||||||
|
@@ -314,9 +314,9 @@ int main(int argc, char **argv) |
||||||
|
parseHandler.verbose = evalHandler.verbose = cd.isVerbose(); |
||||||
|
ProFileOption option; |
||||||
|
#ifdef QT_BOOTSTRAPPED |
||||||
|
- option.initProperties(binDir + QLatin1String("/qmake")); |
||||||
|
+ option.initProperties(binDir + QLatin1String("/qmake-qt4")); |
||||||
|
#else |
||||||
|
- option.initProperties(app.applicationDirPath() + QLatin1String("/qmake")); |
||||||
|
+ option.initProperties(app.applicationDirPath() + QLatin1String("/qmake-qt4")); |
||||||
|
#endif |
||||||
|
ProFileParser parser(0, &parseHandler); |
||||||
|
ProFileEvaluator visitor(&option, &parser, &evalHandler); |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp.linguist_qtmake-qt4 qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp.linguist_qtmake-qt4 2012-04-26 21:45:50.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp 2012-05-29 11:46:48.811134546 +0200 |
||||||
|
@@ -765,7 +765,7 @@ int main(int argc, char **argv) |
||||||
|
|
||||||
|
parseHandler.verbose = evalHandler.verbose = !!(options & Verbose); |
||||||
|
ProFileOption option; |
||||||
|
- option.initProperties(app.applicationDirPath() + QLatin1String("/qmake")); |
||||||
|
+ option.initProperties(app.applicationDirPath() + QLatin1String("/qmake-qt4")); |
||||||
|
option.setCommandLineArguments(QStringList() << QLatin1String("CONFIG+=lupdate_run")); |
||||||
|
ProFileParser parser(0, &parseHandler); |
||||||
|
|
@ -0,0 +1,10 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro.debuginfo qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro |
||||||
|
--- qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro.debuginfo 2012-03-14 09:01:17.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro 2012-05-11 11:55:37.780070386 -0500 |
||||||
|
@@ -34,6 +34,3 @@ MOCDIR = .moc |
||||||
|
|
||||||
|
*-g++*: QMAKE_CXXFLAGS += -fno-strict-aliasing |
||||||
|
|
||||||
|
-CONFIG -= separate_debug_info |
||||||
|
-CONFIG += no_debug_info |
||||||
|
- |
@ -0,0 +1,53 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.cpp.me qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.cpp.me 2012-03-30 21:54:59.921331145 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.cpp 2012-03-30 21:58:14.516042067 +0200 |
||||||
|
@@ -41,6 +41,7 @@ |
||||||
|
|
||||||
|
#include "qtgafile.h" |
||||||
|
|
||||||
|
+#include <QtCore/QBuffer> |
||||||
|
#include <QtCore/QIODevice> |
||||||
|
#include <QtCore/QDebug> |
||||||
|
#include <QtCore/QDateTime> |
||||||
|
@@ -264,3 +265,16 @@ QImage QTgaFile::readImage() |
||||||
|
// TODO: add processing of TGA extension information - ie TGA 2.0 files |
||||||
|
return im; |
||||||
|
} |
||||||
|
+/** |
||||||
|
+ * Checks if device contains a valid tga image, *without* changing device |
||||||
|
+ * position. |
||||||
|
+ */ |
||||||
|
+bool QTgaFile::canRead(QIODevice *device) |
||||||
|
+{ |
||||||
|
+ QByteArray header = device->peek(HeaderSize); |
||||||
|
+ if (header.size() < HeaderSize) |
||||||
|
+ return false; |
||||||
|
+ QBuffer buffer(&header); |
||||||
|
+ QTgaFile tga(&buffer); |
||||||
|
+ return tga.isValid(); |
||||||
|
+} |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.h.me qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.h |
||||||
|
--- qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.h.me 2012-03-30 21:58:39.670023189 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgafile.h 2012-03-30 21:59:06.202317384 +0200 |
||||||
|
@@ -93,6 +93,8 @@ public: |
||||||
|
inline QSize size() const; |
||||||
|
inline Compression compression() const; |
||||||
|
|
||||||
|
+ static bool canRead(QIODevice *device); |
||||||
|
+ |
||||||
|
private: |
||||||
|
static inline quint16 littleEndianInt(const unsigned char *d); |
||||||
|
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgahandler.cpp.me qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgahandler.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgahandler.cpp.me 2012-03-30 21:59:17.373303356 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.1/src/plugins/imageformats/tga/qtgahandler.cpp 2012-03-30 22:00:13.817226439 +0200 |
||||||
|
@@ -77,8 +77,7 @@ bool QTgaHandler::canRead(QIODevice *dev |
||||||
|
qWarning("QTgaHandler::canRead() called with no device"); |
||||||
|
return false; |
||||||
|
} |
||||||
|
- QTgaFile tga(device); |
||||||
|
- return tga.isValid(); |
||||||
|
+ return QTgaFile::canRead(device); |
||||||
|
} |
||||||
|
|
||||||
|
bool QTgaHandler::read(QImage *image) |
@ -0,0 +1,13 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp.me qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp.me 2012-06-19 12:52:22.740180410 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp 2012-06-19 12:52:51.953194103 +0200 |
||||||
|
@@ -944,8 +944,7 @@ void MainWindow::updateApplicationFont() |
||||||
|
if (helpEngine.usesAppFont()) |
||||||
|
font = helpEngine.appFont(); |
||||||
|
|
||||||
|
- const QWidgetList &widgets = qApp->allWidgets(); |
||||||
|
- foreach (QWidget* widget, widgets) |
||||||
|
+ foreach (QWidget* widget, QApplication::allWidgets()) |
||||||
|
widget->setFont(font); |
||||||
|
} |
||||||
|
|
@ -0,0 +1,23 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp.icu_no_debug qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp.icu_no_debug 2012-09-06 02:33:45.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp 2012-09-11 09:04:21.542379795 -0500 |
||||||
|
@@ -84,7 +84,9 @@ bool qt_initIcu(const QString &localeStr |
||||||
|
QLibrary lib(QLatin1String("icui18n"), QLatin1String(U_ICU_VERSION_SHORT)); |
||||||
|
lib.setLoadHints(QLibrary::ImprovedSearchHeuristics); |
||||||
|
if (!lib.load()) { |
||||||
|
+#ifndef QT_NO_DEBUG |
||||||
|
qWarning() << "Unable to load library icui18n" << lib.errorString(); |
||||||
|
+#endif |
||||||
|
status = ErrorLoading; |
||||||
|
return false; |
||||||
|
} |
||||||
|
@@ -114,7 +116,9 @@ bool qt_initIcu(const QString &localeStr |
||||||
|
QLibrary ucLib(QLatin1String("icuuc"), QLatin1String(U_ICU_VERSION_SHORT)); |
||||||
|
ucLib.setLoadHints(QLibrary::ImprovedSearchHeuristics); |
||||||
|
if (!ucLib.load()) { |
||||||
|
+#ifndef QT_NO_DEBUG |
||||||
|
qWarning() << "Unable to load library icuuc" << ucLib.errorString(); |
||||||
|
+#endif |
||||||
|
status = ErrorLoading; |
||||||
|
return false; |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri.no_Werror qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri |
||||||
|
--- qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri.no_Werror 2012-09-06 02:33:50.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri 2012-09-11 09:03:19.152159783 -0500 |
||||||
|
@@ -102,7 +102,7 @@ CONFIG -= warn_on |
||||||
|
|
||||||
|
# Treat warnings as errors on x86/Linux/GCC |
||||||
|
linux-g++* { |
||||||
|
- !CONFIG(standalone_package):if(isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386)): QMAKE_CXXFLAGS += -Werror |
||||||
|
+ #!CONFIG(standalone_package):if(isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386)): QMAKE_CXXFLAGS += -Werror |
||||||
|
|
||||||
|
greaterThan(QT_GCC_MAJOR_VERSION, 3):greaterThan(QT_GCC_MINOR_VERSION, 5) { |
||||||
|
if (!contains(QMAKE_CXXFLAGS, -std=c++0x) && !contains(QMAKE_CXXFLAGS, -std=gnu++0x)) { |
@ -0,0 +1,14 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp.qdbusconnection_no_debug.patch qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp.qdbusconnection_no_debug.patch 2012-09-06 02:33:44.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp 2012-09-11 08:55:29.854026815 -0500 |
||||||
|
@@ -1109,8 +1109,10 @@ public: |
||||||
|
// make sure this connection is running on the main thread |
||||||
|
QCoreApplication *instance = QCoreApplication::instance(); |
||||||
|
if (!instance) { |
||||||
|
+#ifndef QT_NO_DEBUG |
||||||
|
qWarning("QDBusConnection: %s D-Bus connection created before QCoreApplication. Application may misbehave.", |
||||||
|
type == SessionBus ? "session" : type == SystemBus ? "system" : "generic"); |
||||||
|
+#endif |
||||||
|
} else if (QDBusConnectionPrivate::d(*this)) { |
||||||
|
QDBusConnectionPrivate::d(*this)->moveToThread(instance->thread()); |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp.qmake_pkgconfig_requires_private qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp.qmake_pkgconfig_requires_private 2012-11-23 04:11:21.000000000 -0600 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp 2013-02-11 07:36:36.192779528 -0600 |
||||||
|
@@ -3293,6 +3293,12 @@ MakefileGenerator::writePkgConfigFile() |
||||||
|
t << "Requires: " << requires << endl; |
||||||
|
} |
||||||
|
|
||||||
|
+ // requires.private |
||||||
|
+ const QString requires_private = project->values("QMAKE_PKGCONFIG_REQUIRES_PRIVATE").join(" "); |
||||||
|
+ if (!requires_private.isEmpty()) { |
||||||
|
+ t << "Requires.private: " << requires_private << endl; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
t << endl; |
||||||
|
} |
||||||
|
|
@ -0,0 +1,24 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf.QTBUG-14467 qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf.QTBUG-14467 2013-05-30 16:19:17.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf 2013-06-09 11:53:45.709773603 -0500 |
||||||
|
@@ -72,7 +72,7 @@ defineTest(qtAddLibrary) { |
||||||
|
} |
||||||
|
isEmpty(LINKAGE) { |
||||||
|
if(!debug_and_release|build_pass):CONFIG(debug, debug|release) { |
||||||
|
- win32:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}d |
||||||
|
+ win32:LINKAGE = -l$${LIB_NAME}d$${QT_LIBINFIX} |
||||||
|
mac:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}_debug |
||||||
|
} |
||||||
|
isEmpty(LINKAGE):LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX} |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf.QTBUG-14467 qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf.QTBUG-14467 2013-05-30 16:19:17.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf 2013-06-09 11:53:45.710773593 -0500 |
||||||
|
@@ -6,7 +6,7 @@ contains(TEMPLATE, ".*app"){ |
||||||
|
|
||||||
|
qt:for(entryLib, $$list($$unique(QMAKE_LIBS_QT_ENTRY))) { |
||||||
|
isEqual(entryLib, -lqtmain): { |
||||||
|
- CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX}d |
||||||
|
+ CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}d$${QT_LIBINFIX} |
||||||
|
else: QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX} |
||||||
|
} else { |
||||||
|
QMAKE_LIBS += $${entryLib} |
@ -0,0 +1,84 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 2013-05-30 16:18:05.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp 2013-06-09 11:53:45.891771748 -0500 |
||||||
|
@@ -818,6 +818,27 @@ static Bool qt_sync_request_scanner(Disp |
||||||
|
#endif |
||||||
|
#endif // QT_NO_XSYNC |
||||||
|
|
||||||
|
+struct qt_configure_event_data |
||||||
|
+{ |
||||||
|
+ WId window; |
||||||
|
+ WId parent; |
||||||
|
+}; |
||||||
|
+ |
||||||
|
+static Bool qt_configure_event_scanner(Display*, XEvent *event, XPointer arg) |
||||||
|
+{ |
||||||
|
+ qt_configure_event_data *data = |
||||||
|
+ reinterpret_cast<qt_configure_event_data*>(arg); |
||||||
|
+ if (event->type == ConfigureNotify && |
||||||
|
+ event->xconfigure.window == data->window) { |
||||||
|
+ return true; |
||||||
|
+ } else if (event->type == ReparentNotify && |
||||||
|
+ event->xreparent.window == data->window) { |
||||||
|
+ data->parent = event->xreparent.parent; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ return false; |
||||||
|
+} |
||||||
|
+ |
||||||
|
static void qt_x11_create_intern_atoms() |
||||||
|
{ |
||||||
|
const char *names[QX11Data::NAtoms]; |
||||||
|
@@ -5302,8 +5323,11 @@ bool QETWidget::translateConfigEvent(con |
||||||
|
if (d->extra->compress_events) { |
||||||
|
// ConfigureNotify compression for faster opaque resizing |
||||||
|
XEvent otherEvent; |
||||||
|
- while (XCheckTypedWindowEvent(X11->display, internalWinId(), ConfigureNotify, |
||||||
|
- &otherEvent)) { |
||||||
|
+ qt_configure_event_data configureData; |
||||||
|
+ configureData.window = internalWinId(); |
||||||
|
+ configureData.parent = d->topData()->parentWinId; |
||||||
|
+ while (XCheckIfEvent(X11->display, &otherEvent, |
||||||
|
+ &qt_configure_event_scanner, (XPointer)&configureData)) { |
||||||
|
if (qt_x11EventFilter(&otherEvent)) |
||||||
|
continue; |
||||||
|
|
||||||
|
@@ -5316,13 +5340,19 @@ bool QETWidget::translateConfigEvent(con |
||||||
|
newSize.setWidth(otherEvent.xconfigure.width); |
||||||
|
newSize.setHeight(otherEvent.xconfigure.height); |
||||||
|
|
||||||
|
+ trust = isVisible() |
||||||
|
+ && (configureData.parent == XNone || |
||||||
|
+ configureData.parent == QX11Info::appRootWindow()); |
||||||
|
+ |
||||||
|
if (otherEvent.xconfigure.send_event || trust) { |
||||||
|
newCPos.rx() = otherEvent.xconfigure.x + |
||||||
|
otherEvent.xconfigure.border_width; |
||||||
|
newCPos.ry() = otherEvent.xconfigure.y + |
||||||
|
otherEvent.xconfigure.border_width; |
||||||
|
isCPos = true; |
||||||
|
- } |
||||||
|
+ } else { |
||||||
|
+ isCPos = false; |
||||||
|
+ } |
||||||
|
} |
||||||
|
#ifndef QT_NO_XSYNC |
||||||
|
qt_sync_request_event_data sync_event; |
||||||
|
@@ -5335,9 +5365,14 @@ bool QETWidget::translateConfigEvent(con |
||||||
|
} |
||||||
|
|
||||||
|
if (!isCPos) { |
||||||
|
- // we didn't get an updated position of the toplevel. |
||||||
|
- // either we haven't moved or there is a bug in the window manager. |
||||||
|
- // anyway, let's query the position to be certain. |
||||||
|
+ // If the last configure event didn't have a trustable position, |
||||||
|
+ // it's necessary to query, see ICCCM 4.24: |
||||||
|
+ // |
||||||
|
+ // Any real ConfigureNotify event on a top-level window implies |
||||||
|
+ // that the window’s position on the root may have changed, even |
||||||
|
+ // though the event reports that the window’s position in its |
||||||
|
+ // parent is unchanged because the window may have been reparented. |
||||||
|
+ |
||||||
|
int x, y; |
||||||
|
Window child; |
||||||
|
XTranslateCoordinates(X11->display, internalWinId(), |
@ -0,0 +1,14 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/moc/main.cpp.QTBUG-22829 qt-everywhere-opensource-src-4.8.5/src/tools/moc/main.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/tools/moc/main.cpp.QTBUG-22829 2013-06-09 17:04:02.762459323 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/tools/moc/main.cpp 2013-06-09 17:08:20.409680813 -0500 |
||||||
|
@@ -188,8 +188,9 @@ int runMoc(int _argc, char **_argv) |
||||||
|
pp.macros["Q_MOC_RUN"]; |
||||||
|
pp.macros["__cplusplus"]; |
||||||
|
|
||||||
|
- // Workaround a bug while parsing the boost/type_traits/has_operator.hpp header. See QTBUG-22829 |
||||||
|
+ // Workaround a bugs while parsing some boost headers. See QTBUG-22829 |
||||||
|
pp.macros["BOOST_TT_HAS_OPERATOR_HPP_INCLUDED"]; |
||||||
|
+ pp.macros["BOOST_LEXICAL_CAST_INCLUDED"]; |
||||||
|
|
||||||
|
QByteArray filename; |
||||||
|
QByteArray output; |
@ -0,0 +1,115 @@ |
|||||||
|
From 8053ae4030b4342f73a08b9870ccd19189ae401d Mon Sep 17 00:00:00 2001 |
||||||
|
From: Mark Brand <mabrand@mabrand.nl> |
||||||
|
Date: Thu, 7 Mar 2013 11:52:52 +0100 |
||||||
|
Subject: [PATCH 4/4] postgresql driver: escape backslashes only when server |
||||||
|
requires it |
||||||
|
|
||||||
|
Task-number: QTBUG-30076 |
||||||
|
|
||||||
|
Change-Id: I408cda941884f01484d0edfa82c91fc19cb8718c |
||||||
|
Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br> |
||||||
|
Reviewed-by: Sergey Blagodarin |
||||||
|
Reviewed-by: Andy Shaw <andy.shaw@digia.com> |
||||||
|
Reviewed-by: Andras Mantia <andras@kdab.com> |
||||||
|
(cherry picked from qtbase/e3c5351d06ce8a12f035cd0627356bc64d8c334a) |
||||||
|
Reviewed-by: Mark Brand <mabrand@mabrand.nl> |
||||||
|
--- |
||||||
|
src/sql/drivers/psql/qsql_psql.cpp | 38 +++++++++++++++++++++++++++++++++----- |
||||||
|
1 file changed, 33 insertions(+), 5 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp |
||||||
|
index 51ddce0..c2a127c 100644 |
||||||
|
--- a/src/sql/drivers/psql/qsql_psql.cpp |
||||||
|
+++ b/src/sql/drivers/psql/qsql_psql.cpp |
||||||
|
@@ -120,7 +120,16 @@ inline void qPQfreemem(void *buffer) |
||||||
|
class QPSQLDriverPrivate |
||||||
|
{ |
||||||
|
public: |
||||||
|
- QPSQLDriverPrivate(QPSQLDriver *qq) : q(qq), connection(0), isUtf8(false), pro(QPSQLDriver::Version6), sn(0), pendingNotifyCheck(false) {} |
||||||
|
+ QPSQLDriverPrivate(QPSQLDriver *qq) |
||||||
|
+ : q(qq), |
||||||
|
+ connection(0), |
||||||
|
+ isUtf8(false), |
||||||
|
+ pro(QPSQLDriver::Version6), |
||||||
|
+ sn(0), |
||||||
|
+ pendingNotifyCheck(false), |
||||||
|
+ hasBackslashEscape(false) |
||||||
|
+ { } |
||||||
|
+ |
||||||
|
QPSQLDriver *q; |
||||||
|
PGconn *connection; |
||||||
|
bool isUtf8; |
||||||
|
@@ -128,6 +137,7 @@ public: |
||||||
|
QSocketNotifier *sn; |
||||||
|
QStringList seid; |
||||||
|
mutable bool pendingNotifyCheck; |
||||||
|
+ bool hasBackslashEscape; |
||||||
|
|
||||||
|
void appendTables(QStringList &tl, QSqlQuery &t, QChar type); |
||||||
|
PGresult * exec(const char * stmt) const; |
||||||
|
@@ -135,6 +145,7 @@ public: |
||||||
|
QPSQLDriver::Protocol getPSQLVersion(); |
||||||
|
bool setEncodingUtf8(); |
||||||
|
void setDatestyle(); |
||||||
|
+ void detectBackslashEscape(); |
||||||
|
}; |
||||||
|
|
||||||
|
void QPSQLDriverPrivate::appendTables(QStringList &tl, QSqlQuery &t, QChar type) |
||||||
|
@@ -636,6 +647,23 @@ void QPSQLDriverPrivate::setDatestyle() |
||||||
|
PQclear(result); |
||||||
|
} |
||||||
|
|
||||||
|
+void QPSQLDriverPrivate::detectBackslashEscape() |
||||||
|
+{ |
||||||
|
+ // standard_conforming_strings option introduced in 8.2 |
||||||
|
+ // http://www.postgresql.org/docs/8.2/static/runtime-config-compatible.html |
||||||
|
+ if (pro < QPSQLDriver::Version82) { |
||||||
|
+ hasBackslashEscape = true; |
||||||
|
+ } else { |
||||||
|
+ hasBackslashEscape = false; |
||||||
|
+ PGresult* result = exec(QLatin1String("SELECT '\\\\' x")); |
||||||
|
+ int status = PQresultStatus(result); |
||||||
|
+ if (status == PGRES_COMMAND_OK || status == PGRES_TUPLES_OK) |
||||||
|
+ if (QString::fromLatin1(PQgetvalue(result, 0, 0)) == QLatin1String("\\")) |
||||||
|
+ hasBackslashEscape = true; |
||||||
|
+ PQclear(result); |
||||||
|
+ } |
||||||
|
+} |
||||||
|
+ |
||||||
|
static QPSQLDriver::Protocol qMakePSQLVersion(int vMaj, int vMin) |
||||||
|
{ |
||||||
|
switch (vMaj) { |
||||||
|
@@ -742,6 +770,7 @@ QPSQLDriver::QPSQLDriver(PGconn *conn, QObject *parent) |
||||||
|
d->connection = conn; |
||||||
|
if (conn) { |
||||||
|
d->pro = d->getPSQLVersion(); |
||||||
|
+ d->detectBackslashEscape(); |
||||||
|
setOpen(true); |
||||||
|
setOpenError(false); |
||||||
|
} |
||||||
|
@@ -842,6 +871,7 @@ bool QPSQLDriver::open(const QString & db, |
||||||
|
} |
||||||
|
|
||||||
|
d->pro = d->getPSQLVersion(); |
||||||
|
+ d->detectBackslashEscape(); |
||||||
|
d->isUtf8 = d->setEncodingUtf8(); |
||||||
|
d->setDatestyle(); |
||||||
|
|
||||||
|
@@ -1228,12 +1258,10 @@ QString QPSQLDriver::formatValue(const QSqlField &field, bool trimStrings) const |
||||||
|
} |
||||||
|
break; |
||||||
|
case QVariant::String: |
||||||
|
- { |
||||||
|
- // Escape '\' characters |
||||||
|
r = QSqlDriver::formatValue(field, trimStrings); |
||||||
|
- r.replace(QLatin1String("\\"), QLatin1String("\\\\")); |
||||||
|
+ if (d->hasBackslashEscape) |
||||||
|
+ r.replace(QLatin1String("\\"), QLatin1String("\\\\")); |
||||||
|
break; |
||||||
|
- } |
||||||
|
case QVariant::Bool: |
||||||
|
if (field.value().toBool()) |
||||||
|
r = QLatin1String("TRUE"); |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
@ -0,0 +1,12 @@ |
|||||||
|
diff -ur qt-everywhere-opensource-src-4.8.5-CVE-2013-4549/src/xml/sax/qxml.cpp qt-everywhere-opensource-src-4.8.5-QTBUG-35459/src/xml/sax/qxml.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.5-CVE-2013-4549/src/xml/sax/qxml.cpp 2013-12-05 19:23:33.000000000 +0100 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5-QTBUG-35459/src/xml/sax/qxml.cpp 2014-01-13 20:13:59.000000000 +0100 |
||||||
|
@@ -428,7 +428,7 @@ |
||||||
|
// for the DTD currently being parsed. |
||||||
|
static const int dtdRecursionLimit = 2; |
||||||
|
// The maximum amount of characters an entity value may contain, after expansion. |
||||||
|
- static const int entityCharacterLimit = 1024; |
||||||
|
+ static const int entityCharacterLimit = 4096; |
||||||
|
|
||||||
|
const QString &string(); |
||||||
|
void stringClear(); |
@ -0,0 +1,29 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp.QTBUG-4862 qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp.QTBUG-4862 2013-06-09 12:02:50.323221694 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp 2013-06-09 12:38:53.140804742 -0500 |
||||||
|
@@ -624,6 +624,25 @@ QString QFileSystemEngine::homePath() |
||||||
|
{ |
||||||
|
QString home = QFile::decodeName(qgetenv("HOME")); |
||||||
|
if (home.isEmpty()) |
||||||
|
+ { |
||||||
|
+#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) |
||||||
|
+ int size_max = sysconf(_SC_GETPW_R_SIZE_MAX); |
||||||
|
+ if (size_max == -1) |
||||||
|
+ size_max = 1024; |
||||||
|
+ QVarLengthArray<char, 1024> buf(size_max); |
||||||
|
+#endif |
||||||
|
+ struct passwd *pw = 0; |
||||||
|
+ uid_t user_id = getuid(); |
||||||
|
+ pw = getpwuid(user_id); |
||||||
|
+#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) |
||||||
|
+ struct passwd entry; |
||||||
|
+ getpwuid_r(user_id, &entry, buf.data(), buf.size(), &pw); |
||||||
|
+#else |
||||||
|
+ pw = getpwuid(user_id); |
||||||
|
+#endif |
||||||
|
+ home = QFile::decodeName(QByteArray(pw->pw_dir)); |
||||||
|
+ } |
||||||
|
+ if (home.isEmpty()) |
||||||
|
home = rootPath(); |
||||||
|
return QDir::cleanPath(home); |
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp |
||||||
|
index acb115f..5316c40 100644 |
||||||
|
--- a/src/gui/kernel/qapplication.cpp |
||||||
|
+++ b/src/gui/kernel/qapplication.cpp |
||||||
|
@@ -3525,21 +3525,24 @@ void QApplication::commitData(QSessionManager& manager ) |
||||||
|
{ |
||||||
|
emit commitDataRequest(manager); |
||||||
|
if (manager.allowsInteraction()) { |
||||||
|
- QWidgetList done; |
||||||
|
- QWidgetList list = QApplication::topLevelWidgets(); |
||||||
|
- bool cancelled = false; |
||||||
|
- for (int i = 0; !cancelled && i < list.size(); ++i) { |
||||||
|
- QWidget* w = list.at(i); |
||||||
|
- if (w->isVisible() && !done.contains(w)) { |
||||||
|
- cancelled = !w->close(); |
||||||
|
- if (!cancelled) |
||||||
|
- done.append(w); |
||||||
|
- list = QApplication::topLevelWidgets(); |
||||||
|
- i = -1; |
||||||
|
+ const QString desktopEnv = qgetenv("XDG_CURRENT_DESKTOP"); |
||||||
|
+ if (!desktopEnv.startsWith(QLatin1String("GNOME"))) { |
||||||
|
+ QWidgetList done; |
||||||
|
+ QWidgetList list = QApplication::topLevelWidgets(); |
||||||
|
+ bool cancelled = false; |
||||||
|
+ for (int i = 0; !cancelled && i < list.size(); ++i) { |
||||||
|
+ QWidget* w = list.at(i); |
||||||
|
+ if (w->isVisible() && !done.contains(w)) { |
||||||
|
+ cancelled = !w->close(); |
||||||
|
+ if (!cancelled) |
||||||
|
+ done.append(w); |
||||||
|
+ list = QApplication::topLevelWidgets(); |
||||||
|
+ i = -1; |
||||||
|
+ } |
||||||
|
} |
||||||
|
+ if (cancelled) |
||||||
|
+ manager.cancel(); |
||||||
|
} |
||||||
|
- if (cancelled) |
||||||
|
- manager.cancel(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,19 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/configure.mysql_config qt-everywhere-opensource-src-4.8.5/configure |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/configure.mysql_config 2013-06-07 00:16:41.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/configure 2014-03-07 10:09:27.412071146 -0600 |
||||||
|
@@ -5480,8 +5480,15 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do |
||||||
|
[ -z "$CFG_MYSQL_CONFIG" ] && CFG_MYSQL_CONFIG=`"$WHICH" mysql_config` |
||||||
|
if [ -x "$CFG_MYSQL_CONFIG" ]; then |
||||||
|
QT_CFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --include 2>/dev/null` |
||||||
|
+ $CFG_MYSQL_CONFIG --variable=pkglibdir &>/dev/null && \ |
||||||
|
+ QT_MYSQL_PKGLIBDIR=`$CFG_MYSQL_CONFIG --variable=pkglibdir 2>/dev/null` |
||||||
|
+ if [ -n "$QT_MYSQL_PKGLIBDIR" ]; then |
||||||
|
+ QT_LFLAGS_MYSQL_R="-L$QT_MYSQL_PKGLIBDIR -lmysqlclient_r" |
||||||
|
+ QT_LFLAGS_MYSQL="-L$QT_MYSQL_PKGLIBDIR -lmysqlclient" |
||||||
|
+ else |
||||||
|
QT_LFLAGS_MYSQL_R=`$CFG_MYSQL_CONFIG --libs_r 2>/dev/null` |
||||||
|
QT_LFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --libs 2>/dev/null` |
||||||
|
+ fi |
||||||
|
QT_MYSQL_VERSION=`$CFG_MYSQL_CONFIG --version 2>/dev/null` |
||||||
|
QT_MYSQL_VERSION_MAJOR=`echo $QT_MYSQL_VERSION | cut -d . -f 1` |
||||||
|
fi |
@ -0,0 +1,22 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp.qgtkstyle_disable_gtk_theme_check qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp.qgtkstyle_disable_gtk_theme_check 2013-06-09 16:28:22.938840346 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp 2013-06-09 17:03:01.781125479 -0500 |
||||||
|
@@ -503,18 +503,6 @@ void QGtkStylePrivate::initGtkWidgets() |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
- static QString themeName; |
||||||
|
- if (!gtkWidgetMap()->contains("GtkWindow") && themeName.isEmpty()) { |
||||||
|
- themeName = getThemeName(); |
||||||
|
- |
||||||
|
- if (themeName == QLS("Qt") || themeName == QLS("Qt4")) { |
||||||
|
- // Due to namespace conflicts with Qt3 and obvious recursion with Qt4, |
||||||
|
- // we cannot support the GTK_Qt Gtk engine |
||||||
|
- qWarning("QGtkStyle cannot be used together with the GTK_Qt engine."); |
||||||
|
- return; |
||||||
|
- } |
||||||
|
- } |
||||||
|
- |
||||||
|
if (QGtkStylePrivate::gtk_init) { |
||||||
|
// Gtk will set the Qt error handler so we have to reset it afterwards |
||||||
|
x11ErrorHandler qt_x_errhandler = XSetErrorHandler(0); |
@ -0,0 +1,19 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp.qt_plugin_path qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp.qt_plugin_path 2013-06-07 00:16:52.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp 2013-06-21 07:14:10.045039936 -0500 |
||||||
|
@@ -2511,6 +2511,15 @@ QStringList QCoreApplication::libraryPat |
||||||
|
if (!app_libpaths->contains(installPathPlugins)) |
||||||
|
app_libpaths->append(installPathPlugins); |
||||||
|
} |
||||||
|
+ |
||||||
|
+ // hack in support for kde4 plugin paths -- Rex |
||||||
|
+ QString kde4PathPlugins = QLibraryInfo::location(QLibraryInfo::LibrariesPath) + QLatin1String("/kde4/plugins"); |
||||||
|
+ if (QFile::exists(kde4PathPlugins)) { |
||||||
|
+ // Make sure we convert from backslashes to slashes. |
||||||
|
+ //kde4PathPlugins = QDir(kde4PathPlugins).canonicalPath(); |
||||||
|
+ if (!app_libpaths->contains(kde4PathPlugins)) |
||||||
|
+ app_libpaths->append(kde4PathPlugins); |
||||||
|
+ } |
||||||
|
#endif |
||||||
|
|
||||||
|
// If QCoreApplication is not yet instantiated, |
@ -0,0 +1,12 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri.tds_no_strict_aliasing qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri.tds_no_strict_aliasing 2013-06-09 11:57:49.198291245 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri 2013-06-09 12:01:24.120100371 -0500 |
||||||
|
@@ -1,6 +1,8 @@ |
||||||
|
HEADERS += $$PWD/qsql_tds.h |
||||||
|
SOURCES += $$PWD/qsql_tds.cpp |
||||||
|
|
||||||
|
+*-g++*: QMAKE_CXXFLAGS += -fno-strict-aliasing |
||||||
|
+ |
||||||
|
unix|win32-g++*: { |
||||||
|
LIBS += $$QT_LFLAGS_TDS |
||||||
|
!contains(LIBS, .*sybdb.*):LIBS += -lsybdb |
@ -0,0 +1,28 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/moc/moc.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/moc/moc.cpp |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp.uic_multilib 2013-05-30 16:18:04.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp 2013-06-09 11:50:25.597813974 -0500 |
||||||
|
@@ -152,8 +152,7 @@ void Ui3Reader::embed(const char *projec |
||||||
|
for ( it = images.begin(); it != images.end(); ++it ) |
||||||
|
out << "** " << *it << "\n"; |
||||||
|
out << "**\n"; |
||||||
|
- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n"; |
||||||
|
- out << "** by: The User Interface Compiler for Qt version " << QT_VERSION_STR << "\n"; |
||||||
|
+ out << "** Created: by: The User Interface Compiler for Qt version " << QT_VERSION_STR << "\n"; |
||||||
|
out << "**\n"; |
||||||
|
out << "** WARNING! All changes made in this file will be lost!\n"; |
||||||
|
out << "****************************************************************************/\n"; |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp.uic_multilib 2013-05-30 16:18:04.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp 2013-06-09 11:51:28.310174526 -0500 |
||||||
|
@@ -146,8 +146,7 @@ void Uic::writeCopyrightHeader(DomUI *ui |
||||||
|
out << "/********************************************************************************\n"; |
||||||
|
out << "** Form generated from reading UI file '" << QFileInfo(opt.inputFile).fileName() << "'\n"; |
||||||
|
out << "**\n"; |
||||||
|
- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n"; |
||||||
|
- out << "** " << QString::fromLatin1("by: Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR)); |
||||||
|
+ out << "** Created by: " << QString::fromLatin1("Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR)); |
||||||
|
out << "**\n"; |
||||||
|
out << "** WARNING! All changes made in this file will be lost when recompiling UI file!\n"; |
||||||
|
out << "********************************************************************************/\n\n"; |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic/uic.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic/uic.cpp |
@ -0,0 +1,16 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri.webkit_debuginfo qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri.webkit_debuginfo 2013-06-07 00:16:55.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri 2013-07-11 14:04:19.937056249 -0500 |
||||||
|
@@ -5,6 +5,12 @@ include(features.pri) |
||||||
|
|
||||||
|
# Uncomment this to enable Texture Mapper. |
||||||
|
# CONFIG += texmap |
||||||
|
+# |
||||||
|
+equals(QT_ARCH, s390)|equals(QT_ARCH, arm)|equals(QT_ARCH, mips)|equals(QT_ARCH, i386)|equals(QT_ARCH, i686)|equals(QT_ARCH, x86_64)|equals(QT_ARCH, powerpc64)|equals(QT_ARCH, powerpc) { |
||||||
|
+ message("WebCore workaround for QtWebkit: do not build with -g, but with -g1") |
||||||
|
+ QMAKE_CXXFLAGS_RELEASE -= -g |
||||||
|
+ QMAKE_CXXFLAGS_RELEASE += -g1 |
||||||
|
+} |
||||||
|
|
||||||
|
QT *= network |
||||||
|
|
@ -0,0 +1,94 @@ |
|||||||
|
--- src/corelib/kernel/qeventdispatcher_glib.cpp.sav 2014-03-28 15:26:37.000000000 +0100 |
||||||
|
+++ src/corelib/kernel/qeventdispatcher_glib.cpp 2014-04-24 09:44:09.358659204 +0200 |
||||||
|
@@ -255,22 +255,30 @@ struct GPostEventSource |
||||||
|
GSource source; |
||||||
|
QAtomicInt serialNumber; |
||||||
|
int lastSerialNumber; |
||||||
|
+ QEventLoop::ProcessEventsFlags processEventsFlags; |
||||||
|
QEventDispatcherGlibPrivate *d; |
||||||
|
}; |
||||||
|
|
||||||
|
static gboolean postEventSourcePrepare(GSource *s, gint *timeout) |
||||||
|
{ |
||||||
|
+ GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s); |
||||||
|
QThreadData *data = QThreadData::current(); |
||||||
|
if (!data) |
||||||
|
return false; |
||||||
|
|
||||||
|
+ QEventLoop::ProcessEventsFlags excludeAllFlags |
||||||
|
+ = QEventLoop::ExcludeUserInputEvents |
||||||
|
+ | QEventLoop::ExcludeSocketNotifiers |
||||||
|
+ | QEventLoop::X11ExcludeTimers; |
||||||
|
+ if ((source->processEventsFlags & excludeAllFlags) == excludeAllFlags) |
||||||
|
+ return false; |
||||||
|
+ |
||||||
|
gint dummy; |
||||||
|
if (!timeout) |
||||||
|
timeout = &dummy; |
||||||
|
const bool canWait = data->canWaitLocked(); |
||||||
|
*timeout = canWait ? -1 : 0; |
||||||
|
|
||||||
|
- GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s); |
||||||
|
return (!canWait |
||||||
|
|| (source->serialNumber != source->lastSerialNumber)); |
||||||
|
} |
||||||
|
@@ -284,8 +292,14 @@ static gboolean postEventSourceDispatch( |
||||||
|
{ |
||||||
|
GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s); |
||||||
|
source->lastSerialNumber = source->serialNumber; |
||||||
|
- QCoreApplication::sendPostedEvents(); |
||||||
|
- source->d->runTimersOnceWithNormalPriority(); |
||||||
|
+ QEventLoop::ProcessEventsFlags excludeAllFlags |
||||||
|
+ = QEventLoop::ExcludeUserInputEvents |
||||||
|
+ | QEventLoop::ExcludeSocketNotifiers |
||||||
|
+ | QEventLoop::X11ExcludeTimers; |
||||||
|
+ if ((source->processEventsFlags & excludeAllFlags) != excludeAllFlags) { |
||||||
|
+ QCoreApplication::sendPostedEvents(); |
||||||
|
+ source->d->runTimersOnceWithNormalPriority(); |
||||||
|
+ } |
||||||
|
return true; // i dunno, george... |
||||||
|
} |
||||||
|
|
||||||
|
@@ -329,6 +343,7 @@ QEventDispatcherGlibPrivate::QEventDispa |
||||||
|
postEventSource = reinterpret_cast<GPostEventSource *>(g_source_new(&postEventSourceFuncs, |
||||||
|
sizeof(GPostEventSource))); |
||||||
|
postEventSource->serialNumber = 1; |
||||||
|
+ postEventSource->processEventsFlags = QEventLoop::AllEvents; |
||||||
|
postEventSource->d = this; |
||||||
|
g_source_set_can_recurse(&postEventSource->source, true); |
||||||
|
g_source_attach(&postEventSource->source, mainContext); |
||||||
|
@@ -423,6 +438,7 @@ bool QEventDispatcherGlib::processEvents |
||||||
|
|
||||||
|
// tell postEventSourcePrepare() and timerSource about any new flags |
||||||
|
QEventLoop::ProcessEventsFlags savedFlags = d->timerSource->processEventsFlags; |
||||||
|
+ d->postEventSource->processEventsFlags = flags; |
||||||
|
d->timerSource->processEventsFlags = flags; |
||||||
|
d->socketNotifierSource->processEventsFlags = flags; |
||||||
|
|
||||||
|
@@ -435,6 +451,7 @@ bool QEventDispatcherGlib::processEvents |
||||||
|
while (!result && canWait) |
||||||
|
result = g_main_context_iteration(d->mainContext, canWait); |
||||||
|
|
||||||
|
+ d->postEventSource->processEventsFlags = savedFlags; |
||||||
|
d->timerSource->processEventsFlags = savedFlags; |
||||||
|
d->socketNotifierSource->processEventsFlags = savedFlags; |
||||||
|
|
||||||
|
--- src/corelib/kernel/qeventdispatcher_unix.cpp.sav 2013-06-07 07:16:52.000000000 +0200 |
||||||
|
+++ src/corelib/kernel/qeventdispatcher_unix.cpp 2014-04-24 09:43:06.927589535 +0200 |
||||||
|
@@ -905,7 +905,15 @@ bool QEventDispatcherUNIX::processEvents |
||||||
|
|
||||||
|
// we are awake, broadcast it |
||||||
|
emit awake(); |
||||||
|
- QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData); |
||||||
|
+ |
||||||
|
+ QEventLoop::ProcessEventsFlags excludeAllFlags |
||||||
|
+ = QEventLoop::ExcludeUserInputEvents |
||||||
|
+ | QEventLoop::ExcludeSocketNotifiers |
||||||
|
+ | QEventLoop::X11ExcludeTimers; |
||||||
|
+ if ((flags & excludeAllFlags) == excludeAllFlags) |
||||||
|
+ return false; |
||||||
|
+ if(( flags & excludeAllFlags ) != excludeAllFlags ) |
||||||
|
+ QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData); |
||||||
|
|
||||||
|
int nevents = 0; |
||||||
|
const bool canWait = (d->threadData->canWaitLocked() |
@ -0,0 +1,63 @@ |
|||||||
|
Author: Jan-Marek Glogowski <glogow@fbihome.de> |
||||||
|
Date: Thu Mar 06 18:44:43 2014 +0100 |
||||||
|
|
||||||
|
Honor QEventLoop::ExcludeSocketNotifiers in glib event loop. |
||||||
|
|
||||||
|
Implements QEventLoop::ExcludeSocketNotifiers in the same way |
||||||
|
QEventLoop::X11ExcludeTimers is already implemented for the glib |
||||||
|
event loop. |
||||||
|
|
||||||
|
--- qt4-x11-4.8.1.orig/src/corelib/kernel/qeventdispatcher_glib.cpp |
||||||
|
+++ qt4-x11-4.8.1/src/corelib/kernel/qeventdispatcher_glib.cpp |
||||||
|
@@ -65,6 +65,7 @@ struct GPollFDWithQSocketNotifier |
||||||
|
struct GSocketNotifierSource |
||||||
|
{ |
||||||
|
GSource source; |
||||||
|
+ QEventLoop::ProcessEventsFlags processEventsFlags; |
||||||
|
QList<GPollFDWithQSocketNotifier *> pollfds; |
||||||
|
}; |
||||||
|
|
||||||
|
@@ -80,6 +81,9 @@ static gboolean socketNotifierSourceChec |
||||||
|
GSocketNotifierSource *src = reinterpret_cast<GSocketNotifierSource *>(source); |
||||||
|
|
||||||
|
bool pending = false; |
||||||
|
+ if (src->processEventsFlags & QEventLoop::ExcludeSocketNotifiers) |
||||||
|
+ return pending; |
||||||
|
+ |
||||||
|
for (int i = 0; !pending && i < src->pollfds.count(); ++i) { |
||||||
|
GPollFDWithQSocketNotifier *p = src->pollfds.at(i); |
||||||
|
|
||||||
|
@@ -103,6 +107,9 @@ static gboolean socketNotifierSourceDisp |
||||||
|
QEvent event(QEvent::SockAct); |
||||||
|
|
||||||
|
GSocketNotifierSource *src = reinterpret_cast<GSocketNotifierSource *>(source); |
||||||
|
+ if (src->processEventsFlags & QEventLoop::ExcludeSocketNotifiers) |
||||||
|
+ return true; |
||||||
|
+ |
||||||
|
for (int i = 0; i < src->pollfds.count(); ++i) { |
||||||
|
GPollFDWithQSocketNotifier *p = src->pollfds.at(i); |
||||||
|
|
||||||
|
@@ -330,6 +337,7 @@ QEventDispatcherGlibPrivate::QEventDispa |
||||||
|
reinterpret_cast<GSocketNotifierSource *>(g_source_new(&socketNotifierSourceFuncs, |
||||||
|
sizeof(GSocketNotifierSource))); |
||||||
|
(void) new (&socketNotifierSource->pollfds) QList<GPollFDWithQSocketNotifier *>(); |
||||||
|
+ socketNotifierSource->processEventsFlags = QEventLoop::AllEvents; |
||||||
|
g_source_set_can_recurse(&socketNotifierSource->source, true); |
||||||
|
g_source_attach(&socketNotifierSource->source, mainContext); |
||||||
|
|
||||||
|
@@ -415,6 +423,7 @@ bool QEventDispatcherGlib::processEvents |
||||||
|
// tell postEventSourcePrepare() and timerSource about any new flags |
||||||
|
QEventLoop::ProcessEventsFlags savedFlags = d->timerSource->processEventsFlags; |
||||||
|
d->timerSource->processEventsFlags = flags; |
||||||
|
+ d->socketNotifierSource->processEventsFlags = flags; |
||||||
|
|
||||||
|
if (!(flags & QEventLoop::EventLoopExec)) { |
||||||
|
// force timers to be sent at normal priority |
||||||
|
@@ -426,6 +435,7 @@ bool QEventDispatcherGlib::processEvents |
||||||
|
result = g_main_context_iteration(d->mainContext, canWait); |
||||||
|
|
||||||
|
d->timerSource->processEventsFlags = savedFlags; |
||||||
|
+ d->socketNotifierSource->processEventsFlags = savedFlags; |
||||||
|
|
||||||
|
if (canWait) |
||||||
|
emit awake(); |
@ -0,0 +1,12 @@ |
|||||||
|
--- src/gui/kernel/qclipboard_x11.cpp.sav 2014-04-25 09:52:03.855693228 +0200 |
||||||
|
+++ src/gui/kernel/qclipboard_x11.cpp 2014-04-25 09:51:58.038693777 +0200 |
||||||
|
@@ -548,7 +548,8 @@ bool QX11Data::clipboardWaitForEvent(Win |
||||||
|
return false; |
||||||
|
|
||||||
|
XSync(X11->display, false); |
||||||
|
- usleep(50000); |
||||||
|
+ if (!XPending(X11->display)) |
||||||
|
+ usleep(5000); |
||||||
|
|
||||||
|
now.start(); |
||||||
|
|
@ -0,0 +1,31 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390 qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390 2014-03-30 15:36:49.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h 2014-03-31 17:59:16.846465899 -0500 |
||||||
|
@@ -189,6 +189,18 @@ |
||||||
|
#define WTF_CPU_SPARC 1 |
||||||
|
#endif |
||||||
|
|
||||||
|
+/* CPU(S390X) - S390 64-bit */ |
||||||
|
+#if defined(__s390x__) |
||||||
|
+#define WTF_CPU_S390X 1 |
||||||
|
+#define WTF_CPU_BIG_ENDIAN 1 |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
+/* CPU(S390) - S390 32-bit */ |
||||||
|
+#if defined(__s390__) |
||||||
|
+#define WTF_CPU_S390 1 |
||||||
|
+#define WTF_CPU_BIG_ENDIAN 1 |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
/* CPU(X86) - i386 / x86 32-bit */ |
||||||
|
#if defined(__i386__) \ |
||||||
|
|| defined(i386) \ |
||||||
|
@@ -903,7 +915,7 @@ |
||||||
|
#endif |
||||||
|
|
||||||
|
#if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64) |
||||||
|
-#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64) |
||||||
|
+#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64) || CPU(S390X) |
||||||
|
#define WTF_USE_JSVALUE64 1 |
||||||
|
#elif CPU(ARM) || CPU(PPC64) |
||||||
|
#define WTF_USE_JSVALUE32 1 |
@ -0,0 +1,351 @@ |
|||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/fulltextsearch.pri qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/fulltextsearch.pri |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/fulltextsearch.pri 2014-04-10 20:37:12.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/fulltextsearch.pri 2014-10-26 03:33:45.000000000 +0100 |
||||||
|
@@ -1,125 +1,7 @@ |
||||||
|
-DEFINES += _BUILD_FOR_QT_ LUCENE_DISABLE_MEMTRACKING |
||||||
|
-win32:DEFINES += _CRT_SECURE_NO_DEPRECATE _MT |
||||||
|
- |
||||||
|
-CLUCENEDIR = ../../../../src/3rdparty/clucene/src/CLucene |
||||||
|
- |
||||||
|
-INCLUDEPATH += . .. \ |
||||||
|
- $$CLUCENEDIR \ |
||||||
|
- $$CLUCENEDIR/../ \ |
||||||
|
- $$CLUCENEDIR/analysis \ |
||||||
|
- $$CLUCENEDIR/analysis/standard \ |
||||||
|
- $$CLUCENEDIR/config \ |
||||||
|
- $$CLUCENEDIR/debug \ |
||||||
|
- $$CLUCENEDIR/document \ |
||||||
|
- $$CLUCENEDIR/index \ |
||||||
|
- $$CLUCENEDIR/queryParser \ |
||||||
|
- $$CLUCENEDIR/search \ |
||||||
|
- $$CLUCENEDIR/store \ |
||||||
|
- $$CLUCENEDIR/util |
||||||
|
- |
||||||
|
- |
||||||
|
-SOURCES += $$CLUCENEDIR/StdHeader.cpp \ |
||||||
|
- $$CLUCENEDIR/analysis/AnalysisHeader.cpp \ |
||||||
|
- $$CLUCENEDIR/analysis/Analyzers.cpp \ |
||||||
|
- $$CLUCENEDIR/config/gunichartables.cpp \ |
||||||
|
- $$CLUCENEDIR/config/repl_lltot.cpp \ |
||||||
|
- $$CLUCENEDIR/config/repl_tcscasecmp.cpp \ |
||||||
|
- $$CLUCENEDIR/config/repl_tcslwr.cpp \ |
||||||
|
- $$CLUCENEDIR/config/repl_tcstod.cpp \ |
||||||
|
- $$CLUCENEDIR/config/repl_tcstoll.cpp \ |
||||||
|
- $$CLUCENEDIR/config/repl_tprintf.cpp \ |
||||||
|
- $$CLUCENEDIR/config/threads.cpp \ |
||||||
|
- $$CLUCENEDIR/config/utf8.cpp \ |
||||||
|
- $$CLUCENEDIR/debug/condition.cpp \ |
||||||
|
- $$CLUCENEDIR/debug/error.cpp \ |
||||||
|
- $$CLUCENEDIR/debug/memtracking.cpp \ |
||||||
|
- $$CLUCENEDIR/document/DateField.cpp \ |
||||||
|
- $$CLUCENEDIR/document/Document.cpp \ |
||||||
|
- $$CLUCENEDIR/document/Field.cpp \ |
||||||
|
- $$CLUCENEDIR/index/CompoundFile.cpp \ |
||||||
|
- $$CLUCENEDIR/index/DocumentWriter.cpp \ |
||||||
|
- $$CLUCENEDIR/index/FieldInfos.cpp \ |
||||||
|
- $$CLUCENEDIR/index/FieldsReader.cpp \ |
||||||
|
- $$CLUCENEDIR/index/FieldsWriter.cpp \ |
||||||
|
- $$CLUCENEDIR/index/IndexModifier.cpp \ |
||||||
|
- $$CLUCENEDIR/index/IndexReader.cpp \ |
||||||
|
- $$CLUCENEDIR/index/IndexWriter.cpp \ |
||||||
|
- $$CLUCENEDIR/index/MultiReader.cpp \ |
||||||
|
- $$CLUCENEDIR/index/SegmentInfos.cpp \ |
||||||
|
- $$CLUCENEDIR/index/SegmentMergeInfo.cpp \ |
||||||
|
- $$CLUCENEDIR/index/SegmentMergeQueue.cpp \ |
||||||
|
- $$CLUCENEDIR/index/SegmentMerger.cpp \ |
||||||
|
- $$CLUCENEDIR/index/SegmentReader.cpp \ |
||||||
|
- $$CLUCENEDIR/index/SegmentTermDocs.cpp \ |
||||||
|
- $$CLUCENEDIR/index/SegmentTermEnum.cpp \ |
||||||
|
- $$CLUCENEDIR/index/SegmentTermPositions.cpp \ |
||||||
|
- $$CLUCENEDIR/index/SegmentTermVector.cpp \ |
||||||
|
- $$CLUCENEDIR/index/Term.cpp \ |
||||||
|
- $$CLUCENEDIR/index/TermInfo.cpp \ |
||||||
|
- $$CLUCENEDIR/index/TermInfosReader.cpp \ |
||||||
|
- $$CLUCENEDIR/index/TermInfosWriter.cpp \ |
||||||
|
- $$CLUCENEDIR/index/TermVectorReader.cpp \ |
||||||
|
- $$CLUCENEDIR/index/TermVectorWriter.cpp \ |
||||||
|
- $$CLUCENEDIR/queryParser/Lexer.cpp \ |
||||||
|
- $$CLUCENEDIR/queryParser/MultiFieldQueryParser.cpp \ |
||||||
|
- $$CLUCENEDIR/queryParser/QueryParser.cpp \ |
||||||
|
- $$CLUCENEDIR/queryParser/QueryParserBase.cpp \ |
||||||
|
- $$CLUCENEDIR/queryParser/QueryToken.cpp \ |
||||||
|
- $$CLUCENEDIR/queryParser/TokenList.cpp \ |
||||||
|
- $$CLUCENEDIR/search/BooleanQuery.cpp \ |
||||||
|
- $$CLUCENEDIR/search/BooleanScorer.cpp \ |
||||||
|
- $$CLUCENEDIR/search/CachingWrapperFilter.cpp \ |
||||||
|
- $$CLUCENEDIR/search/ChainedFilter.cpp \ |
||||||
|
- $$CLUCENEDIR/search/ConjunctionScorer.cpp \ |
||||||
|
- $$CLUCENEDIR/search/DateFilter.cpp \ |
||||||
|
- $$CLUCENEDIR/search/ExactPhraseScorer.cpp \ |
||||||
|
- $$CLUCENEDIR/search/Explanation.cpp \ |
||||||
|
- $$CLUCENEDIR/search/FieldCache.cpp \ |
||||||
|
- $$CLUCENEDIR/search/FieldCacheImpl.cpp \ |
||||||
|
- $$CLUCENEDIR/search/FieldDocSortedHitQueue.cpp \ |
||||||
|
- $$CLUCENEDIR/search/FieldSortedHitQueue.cpp \ |
||||||
|
- $$CLUCENEDIR/search/FilteredTermEnum.cpp \ |
||||||
|
- $$CLUCENEDIR/search/FuzzyQuery.cpp \ |
||||||
|
- $$CLUCENEDIR/search/HitQueue.cpp \ |
||||||
|
- $$CLUCENEDIR/search/Hits.cpp \ |
||||||
|
- $$CLUCENEDIR/search/IndexSearcher.cpp \ |
||||||
|
- $$CLUCENEDIR/search/MultiSearcher.cpp \ |
||||||
|
- $$CLUCENEDIR/search/MultiTermQuery.cpp \ |
||||||
|
- $$CLUCENEDIR/search/PhrasePositions.cpp \ |
||||||
|
- $$CLUCENEDIR/search/PhraseQuery.cpp \ |
||||||
|
- $$CLUCENEDIR/search/PhraseScorer.cpp \ |
||||||
|
- $$CLUCENEDIR/search/PrefixQuery.cpp \ |
||||||
|
- $$CLUCENEDIR/search/QueryFilter.cpp \ |
||||||
|
- $$CLUCENEDIR/search/RangeFilter.cpp \ |
||||||
|
- $$CLUCENEDIR/search/RangeQuery.cpp \ |
||||||
|
- $$CLUCENEDIR/search/SearchHeader.cpp \ |
||||||
|
- $$CLUCENEDIR/search/Similarity.cpp \ |
||||||
|
- $$CLUCENEDIR/search/SloppyPhraseScorer.cpp \ |
||||||
|
- $$CLUCENEDIR/search/Sort.cpp \ |
||||||
|
- $$CLUCENEDIR/search/TermQuery.cpp \ |
||||||
|
- $$CLUCENEDIR/search/TermScorer.cpp \ |
||||||
|
- $$CLUCENEDIR/search/WildcardQuery.cpp \ |
||||||
|
- $$CLUCENEDIR/search/WildcardTermEnum.cpp \ |
||||||
|
- $$CLUCENEDIR/store/FSDirectory.cpp \ |
||||||
|
- $$CLUCENEDIR/store/IndexInput.cpp \ |
||||||
|
- $$CLUCENEDIR/store/IndexOutput.cpp \ |
||||||
|
- $$CLUCENEDIR/store/Lock.cpp \ |
||||||
|
- $$CLUCENEDIR/store/MMapInput.cpp \ |
||||||
|
- $$CLUCENEDIR/store/RAMDirectory.cpp \ |
||||||
|
- $$CLUCENEDIR/store/TransactionalRAMDirectory.cpp \ |
||||||
|
- $$CLUCENEDIR/util/BitSet.cpp \ |
||||||
|
- $$CLUCENEDIR/util/Equators.cpp \ |
||||||
|
- $$CLUCENEDIR/util/FastCharStream.cpp \ |
||||||
|
- $$CLUCENEDIR/util/fileinputstream.cpp \ |
||||||
|
- $$CLUCENEDIR/util/Misc.cpp \ |
||||||
|
- $$CLUCENEDIR/util/Reader.cpp \ |
||||||
|
- $$CLUCENEDIR/util/StringBuffer.cpp \ |
||||||
|
- $$CLUCENEDIR/util/StringIntern.cpp \ |
||||||
|
- $$CLUCENEDIR/util/ThreadLocal.cpp \ |
||||||
|
- $$CLUCENEDIR/analysis/standard/StandardAnalyzer.cpp \ |
||||||
|
- $$CLUCENEDIR/analysis/standard/StandardFilter.cpp \ |
||||||
|
- $$CLUCENEDIR/analysis/standard/StandardTokenizer.cpp |
||||||
|
|
||||||
|
+INCLUDEPATH += /usr/include/clucene09 $$[QT_INSTALL_LIBS]/clucene09 $$[QT_INSTALL_LIBS] |
||||||
|
+LIBS += -L$$[QT_INSTALL_LIBS]/clucene09 -lclucene |
||||||
|
+#DEFINES += LUCENE_ENABLE_REFCOUNT (must be set at CLucene build time!) |
||||||
|
|
||||||
|
#Header files |
||||||
|
HEADERS += qclucene_global_p.h \ |
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene-config_p.h qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene-config_p.h |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene-config_p.h 2014-04-10 20:37:12.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene-config_p.h 2014-10-26 02:28:54.000000000 +0100 |
||||||
|
@@ -15,6 +15,8 @@ |
||||||
|
** |
||||||
|
****************************************************************************/ |
||||||
|
|
||||||
|
+#error This header must not be included when building against system CLucene. |
||||||
|
+ |
||||||
|
#ifndef QCLUCENE_CONFIG_P_H |
||||||
|
#define QCLUCENE_CONFIG_P_H |
||||||
|
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene_global_p.h qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene_global_p.h |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene_global_p.h 2014-04-10 20:37:12.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene_global_p.h 2014-10-26 02:31:54.000000000 +0100 |
||||||
|
@@ -29,20 +29,10 @@ |
||||||
|
// We mean it. |
||||||
|
// |
||||||
|
|
||||||
|
-#if !defined(_MSC_VER) |
||||||
|
-# include "qclucene-config_p.h" |
||||||
|
-#endif |
||||||
|
- |
||||||
|
#include <QtCore/QChar> |
||||||
|
#include <QtCore/QString> |
||||||
|
|
||||||
|
-#if !defined(_MSC_VER) && !defined(__MINGW32__) && defined(_CL_HAVE_WCHAR_H) && defined(_CL_HAVE_WCHAR_T) |
||||||
|
-# if !defined(TCHAR) |
||||||
|
-# define TCHAR wchar_t |
||||||
|
-# endif |
||||||
|
-#else |
||||||
|
-# include <windows.h> |
||||||
|
-#endif |
||||||
|
+#include <CLucene/StdHeader.h> |
||||||
|
|
||||||
|
QT_BEGIN_HEADER |
||||||
|
|
||||||
|
@@ -56,52 +46,6 @@ |
||||||
|
# define QHELP_EXPORT Q_DECL_IMPORT |
||||||
|
#endif |
||||||
|
|
||||||
|
-// |
||||||
|
-// W A R N I N G |
||||||
|
-// ------------- |
||||||
|
-// |
||||||
|
-// adjustments here, need to be done in |
||||||
|
-// QTDIR/src/3rdparty/clucene/src/CLucene/StdHeader.h as well |
||||||
|
-// |
||||||
|
-#if defined(_LUCENE_DONTIMPLEMENT_NS_MACROS) |
||||||
|
- |
||||||
|
-#elif !defined(DISABLE_NAMESPACE) |
||||||
|
-# ifdef QT_NAMESPACE |
||||||
|
-# define CL_NS_DEF(sub) namespace QT_NAMESPACE { namespace lucene{ namespace sub{ |
||||||
|
-# define CL_NS_DEF2(sub,sub2) namespace QT_NAMESPACE { namespace lucene{ namespace sub{ namespace sub2 { |
||||||
|
- |
||||||
|
-# define CL_NS_END }}} |
||||||
|
-# define CL_NS_END2 }}}} |
||||||
|
- |
||||||
|
-# define CL_NS_USE(sub) using namespace QT_NAMESPACE::lucene::sub; |
||||||
|
-# define CL_NS_USE2(sub,sub2) using namespace QT_NAMESPACE::lucene::sub::sub2; |
||||||
|
- |
||||||
|
-# define CL_NS(sub) QT_NAMESPACE::lucene::sub |
||||||
|
-# define CL_NS2(sub,sub2) QT_NAMESPACE::lucene::sub::sub2 |
||||||
|
-# else |
||||||
|
-# define CL_NS_DEF(sub) namespace lucene{ namespace sub{ |
||||||
|
-# define CL_NS_DEF2(sub,sub2) namespace lucene{ namespace sub{ namespace sub2 { |
||||||
|
- |
||||||
|
-# define CL_NS_END }} |
||||||
|
-# define CL_NS_END2 }}} |
||||||
|
- |
||||||
|
-# define CL_NS_USE(sub) using namespace lucene::sub; |
||||||
|
-# define CL_NS_USE2(sub,sub2) using namespace lucene::sub::sub2; |
||||||
|
- |
||||||
|
-# define CL_NS(sub) lucene::sub |
||||||
|
-# define CL_NS2(sub,sub2) lucene::sub::sub2 |
||||||
|
-# endif |
||||||
|
-#else |
||||||
|
-# define CL_NS_DEF(sub) |
||||||
|
-# define CL_NS_DEF2(sub, sub2) |
||||||
|
-# define CL_NS_END |
||||||
|
-# define CL_NS_END2 |
||||||
|
-# define CL_NS_USE(sub) |
||||||
|
-# define CL_NS_USE2(sub,sub2) |
||||||
|
-# define CL_NS(sub) |
||||||
|
-# define CL_NS2(sub,sub2) |
||||||
|
-#endif |
||||||
|
- |
||||||
|
namespace { |
||||||
|
TCHAR* QStringToTChar(const QString &str) |
||||||
|
{ |
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexreader.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexreader.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexreader.cpp 2014-04-10 20:37:12.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexreader.cpp 2014-10-26 02:48:02.000000000 +0100 |
||||||
|
@@ -18,6 +18,8 @@ |
||||||
|
#include "qindexreader_p.h" |
||||||
|
#include "qclucene_global_p.h" |
||||||
|
|
||||||
|
+#include <QtCore/QDir> |
||||||
|
+ |
||||||
|
#include <CLucene.h> |
||||||
|
#include <CLucene/index/IndexReader.h> |
||||||
|
|
||||||
|
@@ -59,13 +61,13 @@ |
||||||
|
{ |
||||||
|
using namespace lucene::index; |
||||||
|
|
||||||
|
- return IndexReader::isLuceneFile(filename); |
||||||
|
+ return IndexReader::isLuceneFile(filename.toLocal8Bit().constData()); |
||||||
|
} |
||||||
|
|
||||||
|
bool QCLuceneIndexReader::indexExists(const QString &directory) |
||||||
|
{ |
||||||
|
using namespace lucene::index; |
||||||
|
- return IndexReader::indexExists(directory); |
||||||
|
+ return IndexReader::indexExists(directory.toLocal8Bit().constData()); |
||||||
|
} |
||||||
|
|
||||||
|
QCLuceneIndexReader QCLuceneIndexReader::open(const QString &path) |
||||||
|
@@ -73,7 +75,7 @@ |
||||||
|
using namespace lucene::index; |
||||||
|
|
||||||
|
QCLuceneIndexReader indexReader; |
||||||
|
- indexReader.d->reader = IndexReader::open(path); |
||||||
|
+ indexReader.d->reader = IndexReader::open(path.toLocal8Bit().constData()); |
||||||
|
|
||||||
|
return indexReader; |
||||||
|
} |
||||||
|
@@ -81,25 +83,29 @@ |
||||||
|
void QCLuceneIndexReader::unlock(const QString &path) |
||||||
|
{ |
||||||
|
using namespace lucene::index; |
||||||
|
- IndexReader::unlock(path); |
||||||
|
+ IndexReader::unlock(path.toLocal8Bit().constData()); |
||||||
|
} |
||||||
|
|
||||||
|
bool QCLuceneIndexReader::isLocked(const QString &directory) |
||||||
|
{ |
||||||
|
+ // The system CLucene fails here if the directory does not exist yet, unlike |
||||||
|
+ // the bundled one. Work around that. |
||||||
|
+ QDir::current().mkpath(directory); |
||||||
|
+ |
||||||
|
using namespace lucene::index; |
||||||
|
- return IndexReader::isLocked(directory); |
||||||
|
+ return IndexReader::isLocked(directory.toLocal8Bit().constData()); |
||||||
|
} |
||||||
|
|
||||||
|
quint64 QCLuceneIndexReader::lastModified(const QString &directory) |
||||||
|
{ |
||||||
|
using namespace lucene::index; |
||||||
|
- return quint64(IndexReader::lastModified(directory)); |
||||||
|
+ return quint64(IndexReader::lastModified(directory.toLocal8Bit().constData())); |
||||||
|
} |
||||||
|
|
||||||
|
qint64 QCLuceneIndexReader::getCurrentVersion(const QString &directory) |
||||||
|
{ |
||||||
|
using namespace lucene::index; |
||||||
|
- return qint64(IndexReader::getCurrentVersion(directory)); |
||||||
|
+ return qint64(IndexReader::getCurrentVersion(directory.toLocal8Bit().constData())); |
||||||
|
} |
||||||
|
|
||||||
|
void QCLuceneIndexReader::close() |
||||||
|
@@ -155,7 +161,7 @@ |
||||||
|
void QCLuceneIndexReader::setNorm(qint32 doc, const QString &field, qreal value) |
||||||
|
{ |
||||||
|
TCHAR *fieldName = QStringToTChar(field); |
||||||
|
- d->reader->setNorm(int32_t(doc), fieldName, qreal(value)); |
||||||
|
+ d->reader->setNorm(int32_t(doc), fieldName, (float_t)value); |
||||||
|
delete [] fieldName; |
||||||
|
} |
||||||
|
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexwriter.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexwriter.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexwriter.cpp 2014-04-10 20:37:12.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexwriter.cpp 2014-10-26 02:48:27.000000000 +0100 |
||||||
|
@@ -18,6 +18,8 @@ |
||||||
|
#include "qindexwriter_p.h" |
||||||
|
#include "qindexreader_p.h" |
||||||
|
|
||||||
|
+#include <QtCore/QDir> |
||||||
|
+ |
||||||
|
#include <CLucene.h> |
||||||
|
#include <CLucene/index/IndexWriter.h> |
||||||
|
|
||||||
|
@@ -50,7 +52,12 @@ |
||||||
|
: d(new QCLuceneIndexWriterPrivate()) |
||||||
|
, analyzer(analyzer) |
||||||
|
{ |
||||||
|
- d->writer = new lucene::index::IndexWriter(path, |
||||||
|
+ // The system CLucene cannot create directories recursively, so do it here. |
||||||
|
+ // Ignore failure: If it failed, we will get an error from CLucene anyway. |
||||||
|
+ if (create) |
||||||
|
+ QDir::current().mkpath(path); |
||||||
|
+ |
||||||
|
+ d->writer = new lucene::index::IndexWriter(path.toLocal8Bit().constData(), |
||||||
|
analyzer.d->analyzer, create, closeDir); |
||||||
|
} |
||||||
|
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qsearchable.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qsearchable.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qsearchable.cpp 2014-04-10 20:37:12.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qsearchable.cpp 2014-10-26 02:48:44.000000000 +0100 |
||||||
|
@@ -95,7 +95,7 @@ |
||||||
|
: QCLuceneSearcher() |
||||||
|
{ |
||||||
|
lucene::search::IndexSearcher *searcher = |
||||||
|
- new lucene::search::IndexSearcher(path); |
||||||
|
+ new lucene::search::IndexSearcher(path.toLocal8Bit().constData()); |
||||||
|
|
||||||
|
reader.d->reader = searcher->getReader(); |
||||||
|
reader.d->deleteCLuceneIndexReader = false; |
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/lib.pro qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/lib.pro |
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/lib.pro 2014-04-10 20:37:12.000000000 +0200 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/lib.pro 2014-10-26 02:27:55.000000000 +0100 |
||||||
|
@@ -43,6 +43,7 @@ |
||||||
|
qhelp_global.cpp |
||||||
|
|
||||||
|
# access to clucene |
||||||
|
+INCLUDEPATH += /usr/include/clucene09 $$[QT_INSTALL_LIBS]/clucene09 $$[QT_INSTALL_LIBS] |
||||||
|
SOURCES += qhelpsearchindexwriter_clucene.cpp \ |
||||||
|
qhelpsearchindexreader_clucene.cpp |
||||||
|
HEADERS += qhelpenginecore.h \ |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,12 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h.majmin qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h |
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h.majmin 2015-05-07 09:14:48.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h 2016-12-08 12:10:29.677359701 -0600 |
||||||
|
@@ -52,7 +52,7 @@ |
||||||
|
/* |
||||||
|
can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) |
||||||
|
*/ |
||||||
|
-#define QT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch)) |
||||||
|
+#define QT_VERSION_CHECK(qt_version_check_major, qt_version_check_minor, qt_version_check_patch) ((qt_version_check_major<<16)|(qt_version_check_minor<<8)|(qt_version_check_patch)) |
||||||
|
|
||||||
|
#define QT_PACKAGEDATE_STR "2015-05-07" |
||||||
|
|
@ -0,0 +1,12 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than 2016-02-10 16:31:02.450152334 +0100 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp 2016-02-10 16:31:51.495307579 +0100 |
||||||
|
@@ -40,7 +40,7 @@ |
||||||
|
****************************************************************************/ |
||||||
|
|
||||||
|
#include <alsa/asoundlib.h> |
||||||
|
-#if(!(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 10)) |
||||||
|
+#if(!(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 10))) |
||||||
|
#error "Alsa version found too old, require >= 1.0.10" |
||||||
|
#endif |
||||||
|
|
@ -0,0 +1,45 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp.ibase qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp.ibase 2015-05-07 09:14:42.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp 2016-11-30 10:55:05.825339674 -0600 |
||||||
|
@@ -39,7 +39,7 @@ |
||||||
|
** |
||||||
|
****************************************************************************/ |
||||||
|
|
||||||
|
-#include <ibase.h> |
||||||
|
+#include <firebird/ibase.h> |
||||||
|
|
||||||
|
int main(int, char **) |
||||||
|
{ |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro.ibase qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro |
||||||
|
--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro.ibase 2015-05-07 09:14:42.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro 2016-11-30 10:56:11.017740104 -0600 |
||||||
|
@@ -1,4 +1,4 @@ |
||||||
|
SOURCES = ibase.cpp |
||||||
|
CONFIG -= qt dylib |
||||||
|
mac:CONFIG -= app_bundle |
||||||
|
-LIBS += -lgds |
||||||
|
+LIBS += -lfbclient |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h.ibase qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h |
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h.ibase 2015-05-07 09:14:48.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h 2016-11-30 10:57:34.516252974 -0600 |
||||||
|
@@ -45,7 +45,7 @@ |
||||||
|
#include <QtSql/qsqlresult.h> |
||||||
|
#include <QtSql/qsqldriver.h> |
||||||
|
#include <QtSql/private/qsqlcachedresult_p.h> |
||||||
|
-#include <ibase.h> |
||||||
|
+#include <firebird/ibase.h> |
||||||
|
|
||||||
|
QT_BEGIN_HEADER |
||||||
|
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri.ibase qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri |
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri.ibase 2015-05-07 09:14:48.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri 2016-11-30 10:57:11.783113341 -0600 |
||||||
|
@@ -2,7 +2,7 @@ HEADERS += $$PWD/qsql_ibase.h |
||||||
|
SOURCES += $$PWD/qsql_ibase.cpp |
||||||
|
|
||||||
|
unix { |
||||||
|
- !contains(LIBS, .*gds.*):!contains(LIBS, .*libfb.*):LIBS += -lgds |
||||||
|
+ !contains(LIBS, .*gds.*):!contains(LIBS, .*libfb.*):LIBS += -lfbclient |
||||||
|
} else { |
||||||
|
!contains(LIBS, .*gds.*):!contains(LIBS, .*fbclient.*) { |
||||||
|
win32-borland:LIBS += gds32.lib |
@ -0,0 +1,35 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/configure.gcc6 qt-everywhere-opensource-src-4.8.7/configure |
||||||
|
--- qt-everywhere-opensource-src-4.8.7/configure.gcc6 2016-04-15 07:04:19.430268222 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/configure 2016-04-15 07:05:22.157568689 -0500 |
||||||
|
@@ -7744,7 +7744,7 @@ case "$XPLATFORM" in |
||||||
|
*-g++*) |
||||||
|
# Check gcc's version |
||||||
|
case "$(${QMAKE_CONF_COMPILER} -dumpversion)" in |
||||||
|
- 5*|4*|3.4*) |
||||||
|
+ 8*|7*|6*|5*|4*|3.4*) |
||||||
|
;; |
||||||
|
3.3*) |
||||||
|
canBuildWebKit="no" |
||||||
|
@@ -8060,7 +8060,7 @@ g++*) |
||||||
|
3.*) |
||||||
|
COMPILER_VERSION="3.*" |
||||||
|
;; |
||||||
|
- 5*|4.*) |
||||||
|
+ 8*|7*|6*|5*|4.*) |
||||||
|
COMPILER_VERSION="4" |
||||||
|
;; |
||||||
|
*) |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h.gcc6 qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h |
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h.gcc6 2015-05-07 09:14:48.000000000 -0500 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h 2016-04-15 07:04:19.431268227 -0500 |
||||||
|
@@ -70,8 +70,8 @@ namespace QPatternist |
||||||
|
ForegroundShift = 10, |
||||||
|
BackgroundShift = 20, |
||||||
|
SpecialShift = 20, |
||||||
|
- ForegroundMask = ((1 << ForegroundShift) - 1) << ForegroundShift, |
||||||
|
- BackgroundMask = ((1 << BackgroundShift) - 1) << BackgroundShift |
||||||
|
+ ForegroundMask = 0x1f << ForegroundShift, |
||||||
|
+ BackgroundMask = 0x7 << BackgroundShift |
||||||
|
}; |
||||||
|
|
||||||
|
public: |
@ -0,0 +1,13 @@ |
|||||||
|
diff -urp qt-everywhere-opensource-src-4.8.7/configure q/configure |
||||||
|
--- qt-everywhere-opensource-src-4.8.7/configure 2016-04-03 16:49:50.218644449 +0200 |
||||||
|
+++ q/configure 2016-04-03 17:22:35.376405024 +0200 |
||||||
|
@@ -3331,6 +3331,9 @@ arm*) |
||||||
|
CFG_ARCH=arm |
||||||
|
COMPAT_ARCH=armv6 |
||||||
|
;; |
||||||
|
+mips*) |
||||||
|
+ CFG_ARCH=mips |
||||||
|
+ ;; |
||||||
|
esac |
||||||
|
|
||||||
|
if [ -d "$relpath/src/corelib/arch/$CFG_ARCH" ]; then |
@ -0,0 +1,13 @@ |
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/corelib/tools/qstring.h.than qt-everywhere-opensource-src-4.8.5/src/corelib/tools/qstring.h |
||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/sql/kernel/qsqldriver.cpp.than qt-everywhere-opensource-src-4.8.5/src/sql/kernel/qsqldriver.cpp |
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/sql/kernel/qsqldriver.cpp.than 2013-11-21 10:51:56.200161500 +0100 |
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/sql/kernel/qsqldriver.cpp 2013-11-21 12:51:32.594269183 +0100 |
||||||
|
@@ -530,7 +530,7 @@ QString QSqlDriver::sqlStatement(Stateme |
||||||
|
s.clear(); |
||||||
|
} else { |
||||||
|
vals.chop(2); // remove trailing comma |
||||||
|
- s[s.length() - 2] = QLatin1Char(')'); |
||||||
|
+ s[uint(s.length()) - 2] = QLatin1Char(')'); |
||||||
|
s.append(QLatin1String("VALUES (")).append(vals).append(QLatin1Char(')')); |
||||||
|
} |
||||||
|
break; } |
@ -0,0 +1,17 @@ |
|||||||
|
--- a/src/gui/kernel/qguiplatformplugin.cpp.adwaita 2015-02-12 14:32:45.217935391 +0100 |
||||||
|
+++ b/src/gui/kernel/qguiplatformplugin.cpp 2015-02-12 14:46:11.471866038 +0100 |
||||||
|
@@ -165,8 +165,13 @@ QString QGuiPlatformPlugin::styleName() |
||||||
|
case DE_GNOME: { |
||||||
|
QStringList availableStyles = QStyleFactory::keys(); |
||||||
|
// Set QGtkStyle for GNOME if available |
||||||
|
+ QString adwaitaStyleKey = QString::fromLatin1("adwaita"); |
||||||
|
QString gtkStyleKey = QString::fromLatin1("GTK+"); |
||||||
|
- if (availableStyles.contains(gtkStyleKey)) { |
||||||
|
+ if (availableStyles.contains(adwaitaStyleKey)) { |
||||||
|
+ stylename = adwaitaStyleKey; |
||||||
|
+ break; |
||||||
|
+ } |
||||||
|
+ else if (availableStyles.contains(gtkStyleKey)) { |
||||||
|
stylename = gtkStyleKey; |
||||||
|
break; |
||||||
|
} |
@ -0,0 +1,40 @@ |
|||||||
|
From 0bbc2108aa2fe60c32f3fb01926e707cc29e0b81 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Gatis Paeglis <gatis.paeglis@digia.com> |
||||||
|
Date: Sat, 31 Aug 2013 21:22:47 +0200 |
||||||
|
Subject: [PATCH] Revert "QTBUG-15319: fix shortcuts with secondary Xkb |
||||||
|
layout." |
||||||
|
|
||||||
|
The change which attempted to fix QTBUG-15319 broke keyboard |
||||||
|
shortcuts for non latin keyboard layouts. |
||||||
|
|
||||||
|
This patch reverts QTBUG-15319 (f45cdeda8) since it caused a |
||||||
|
regression. |
||||||
|
|
||||||
|
Task-number: QTBUG-32908 |
||||||
|
|
||||||
|
Change-Id: I47d7984fa7986d5218d1f3ff1fc36d2ec67c9ba7 |
||||||
|
Reviewed-by: David Faure <david.faure@kdab.com> |
||||||
|
--- |
||||||
|
src/gui/kernel/qkeymapper_x11.cpp | 5 +---- |
||||||
|
1 file changed, 1 insertion(+), 4 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/gui/kernel/qkeymapper_x11.cpp b/src/gui/kernel/qkeymapper_x11.cpp |
||||||
|
index 005ff3f..7daa41d 100644 |
||||||
|
--- a/src/gui/kernel/qkeymapper_x11.cpp |
||||||
|
+++ b/src/gui/kernel/qkeymapper_x11.cpp |
||||||
|
@@ -282,12 +282,9 @@ QList<int> QKeyMapperPrivate::possibleKeysXKB(QKeyEvent *event) |
||||||
|
|
||||||
|
// first, translate key only using lock modifiers (there are no Qt equivalents for these, so we must |
||||||
|
// always use them when determining the baseKeySym) |
||||||
|
- // Note: the Xkb group to be used for the conversion keycode->keysym has to be given to |
||||||
|
- // XkbLookupKeySym(). This information is contained in the bits 8 to 15 of xmodifiers. |
||||||
|
- // See https://bugreports.qt-project.org/browse/QTBUG-15319 . |
||||||
|
KeySym baseKeySym; |
||||||
|
uint consumedModifiers; |
||||||
|
- if (!XkbLookupKeySym(X11->display, xkeycode, (xmodifiers & (0xff00 | LockMask | qt_num_lock_mask)), |
||||||
|
+ if (!XkbLookupKeySym(X11->display, xkeycode, (xmodifiers & (LockMask | qt_num_lock_mask)), |
||||||
|
&consumedModifiers, &baseKeySym)) |
||||||
|
return QList<int>(); |
||||||
|
|
||||||
|
-- |
||||||
|
1.9.3 |
@ -0,0 +1,50 @@ |
|||||||
|
diff -ur qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_i386.h qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_i386.h |
||||||
|
--- qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_i386.h 2009-02-25 22:09:21.000000000 +0100 |
||||||
|
+++ qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_i386.h 2009-04-01 17:54:21.000000000 +0200 |
||||||
|
@@ -115,8 +115,8 @@ |
||||||
|
asm volatile("lock\n" |
||||||
|
"incl %0\n" |
||||||
|
"setne %1" |
||||||
|
- : "=m" (_q_value), "=qm" (ret) |
||||||
|
- : "m" (_q_value) |
||||||
|
+ : "+m" (_q_value), "=qm" (ret) |
||||||
|
+ : |
||||||
|
: "memory"); |
||||||
|
return ret != 0; |
||||||
|
} |
||||||
|
@@ -127,8 +127,8 @@ |
||||||
|
asm volatile("lock\n" |
||||||
|
"decl %0\n" |
||||||
|
"setne %1" |
||||||
|
- : "=m" (_q_value), "=qm" (ret) |
||||||
|
- : "m" (_q_value) |
||||||
|
+ : "+m" (_q_value), "=qm" (ret) |
||||||
|
+ : |
||||||
|
: "memory"); |
||||||
|
return ret != 0; |
||||||
|
} |
||||||
|
diff -ur qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_x86_64.h qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_x86_64.h |
||||||
|
--- qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_x86_64.h 2009-02-25 22:09:21.000000000 +0100 |
||||||
|
+++ qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_x86_64.h 2009-04-01 17:54:32.000000000 +0200 |
||||||
|
@@ -116,8 +116,8 @@ |
||||||
|
asm volatile("lock\n" |
||||||
|
"incl %0\n" |
||||||
|
"setne %1" |
||||||
|
- : "=m" (_q_value), "=qm" (ret) |
||||||
|
- : "m" (_q_value) |
||||||
|
+ : "+m" (_q_value), "=qm" (ret) |
||||||
|
+ : |
||||||
|
: "memory"); |
||||||
|
return ret != 0; |
||||||
|
} |
||||||
|
@@ -128,8 +128,8 @@ |
||||||
|
asm volatile("lock\n" |
||||||
|
"decl %0\n" |
||||||
|
"setne %1" |
||||||
|
- : "=m" (_q_value), "=qm" (ret) |
||||||
|
- : "m" (_q_value) |
||||||
|
+ : "+m" (_q_value), "=qm" (ret) |
||||||
|
+ : |
||||||
|
: "memory"); |
||||||
|
return ret != 0; |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
diff -up qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp.enable_ft_lcdfilter qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp |
||||||
|
--- qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp.enable_ft_lcdfilter 2009-04-21 18:57:41.000000000 -0500 |
||||||
|
+++ qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp 2009-04-24 11:17:49.562695405 -0500 |
||||||
|
@@ -72,7 +72,7 @@ |
||||||
|
#include FT_CONFIG_OPTIONS_H |
||||||
|
#endif |
||||||
|
|
||||||
|
-#if defined(FT_LCD_FILTER_H) && defined(FT_CONFIG_OPTION_SUBPIXEL_RENDERING) |
||||||
|
+#if defined(FT_LCD_FILTER_H) |
||||||
|
#define QT_USE_FREETYPE_LCDFILTER |
||||||
|
#endif |
||||||
|
|
@ -0,0 +1,8 @@ |
|||||||
|
[Desktop Entry] |
||||||
|
Name=Qt4 Config |
||||||
|
Comment=Configure Qt4 behavior, styles, fonts |
||||||
|
Exec=qtconfig-qt4 |
||||||
|
Icon=qt4-logo |
||||||
|
Terminal=false |
||||||
|
Type=Application |
||||||
|
Categories=Qt;Settings; |
@ -0,0 +1,8 @@ |
|||||||
|
[Desktop Entry] |
||||||
|
Name=Qt4 Demo |
||||||
|
Comment=Show Qt4 demos and programming examples |
||||||
|
Exec=qtdemo-qt4 |
||||||
|
Icon=qt4-logo |
||||||
|
Terminal=false |
||||||
|
Type=Application |
||||||
|
Categories=Qt;Development; |
Loading…
Reference in new issue