Commit Graph

297 Commits (cb841b449a22d6646e148cd7e9d58be5ef5de27c)

Author SHA1 Message Date
Luka Modric 3ed8dc3788 Android: fix log output pattern
Remove hardcoded android log pattern as this is already part of the message to
match behavior on other platforms.

Task-number: QTBUG-69450
Change-Id: I529b550114a2164beafe305f8392891c4ead88f0
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2018-09-27 17:15:17 +00:00
Tor Arne Vestbø b02fe1bfe7 Remove codepaths and checks for unsupported Apple platforms
We no longer support macOS 10.11, iOS/tvOS 10, or watchOS 3.

Change-Id: Ide03d8fac06185ef4162ba75ee54a0adf6916905
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-08-31 12:35:45 +00:00
Morten Johan Sørvig 29c0377f07 WebAssembly for QtBase
This is the squashed diff from wip/webassembly to dev.

Done-with: Peng Wu <peng.wu@intopalo.com>
Done-with: Sami Enne <sami.enne@intopalo.com>
Done-with: Morten Johan Sørvig <morten.sorvig@qt.io>
Started-by: Andrew Knight <andrew.knight@intopalo.com>
Change-Id: I6562433c0a38d6ec49ab675e0f104f2665f3392d
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2018-08-30 06:48:33 +00:00
Thiago Macieira 9bb27ca6cc Make local symbols of some leaked names
Unnamed namespaces and static are great tools. Use them.

Change-Id: Ie01831ddac5446fdbdeefffd15468b3acb3ced79
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-08-03 20:26:50 +00:00
Giuseppe D'Angelo 1a4a2f7f58 QLogging: make QRegularExpression objects static const
To avoid recompiling them multiple times.

Change-Id: Ie4766be3bbaa536bf22b0eaacc430055fe4651cd
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
2018-08-03 18:02:14 +00:00
Giuseppe D'Angelo b42d305333 Remove a deprecation warning coming from QRegularExpression
The flag is deprecated.

Change-Id: Idfd7c31278032ee96b27f3f447a97ecfdd8051af
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-07-21 16:28:12 +00:00
Thiago Macieira f4394c86b6 qFatal: Prevent deadlocks on Windows
We began using abort() on 25d6f312ac
(5.8), which improved since we stopped using exit() with MSVC. However,
abort() with MinGW and on debug-mode MSVC's CRT calls _exit(), which
attempts to cleanly unload the DLLs, which in turn may run global
destructors.

[ChangeLog][QtCore][Important behavior changes] qFatal() no longer uses
std::abort() on Windows, as there are circumstances where global
destructors are still run after that call, leading to possible
deadlocks.

Task-number: QTBUG-34460
Change-Id: I2bec439d0e9841f58c7ffffd152200e45f1df982
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2018-05-02 21:06:32 +00:00
Kai Koehne 7b87bdff1a Doc: Mark local functions in qlogging.cpp as internal
This fixes qdoc warnings introduced by 67d5f79fe6.

Change-Id: I4b199e6243d9a7706befe4bc9549c78c11026d9e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-04-23 06:27:57 +00:00
Ulf Hermann 5a4787dca0 Modernize the "regularexpression" feature
Use QT_CONFIG(regularexpression), disentangle it from QT_BOOTSTRAPPED,
switch it off in the bootstrap build, remove the #ifdefs from
qregularexpression.{h|cpp}, and add QT_REQUIRE_CONFIG(regularexpression)
to the header.

qregularexpression.{h|cpp} are already correctly excluded in tools.pri
if !qtConfig(regularexpression).

Change-Id: I21de154a6a118b76f99003d3acb72ac1e220d302
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2018-03-20 08:19:25 +00:00
Tor Arne Vestbø 67d5f79fe6 logging: Clarify and document how we look for the presence of a console
The privately exported qt_logging_to_console() function has been renamed
to shouldLogToStderr, and exported in the QtPrivate namespace for QtTestLib.

[ChangeLog][Important behavior changes][Logging (including qDebug and
qWarning)] The QT_LOGGING_TO_CONSOLE environment variable has been
deprecated. Use the more specific QT_ASSUME_STDERR_HAS_CONSOLE or
QT_FORCE_STDERR_LOGGING, depending on your usecase.

Change-Id: Ie29228eeac3b700c3de94fee022d5d66d9b5c210
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-03-07 18:12:09 +00:00
Liang Qi 305dd1b61f Merge remote-tracking branch 'origin/5.9' into 5.11
Conflicts:
	.qmake.conf
	src/corelib/animation/qvariantanimation.cpp
	src/corelib/global/qglobal.cpp
	src/corelib/global/qlogging.cpp
	src/corelib/io/qprocess_win.cpp
	src/corelib/json/qjsonarray.cpp
	src/corelib/tools/qsimd_p.h
	src/corelib/tools/qtimezoneprivate_p.h
	src/corelib/xml/qxmlstream_p.h
	src/gui/kernel/qsimpledrag.cpp
	src/gui/kernel/qsimpledrag_p.h
	src/plugins/generic/generic.pro
	src/plugins/platforms/cocoa/qcocoamenu.mm
	src/widgets/styles/qmacstyle_mac.mm
	tests/auto/concurrent/qtconcurrentmap/BLACKLIST
	tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
	tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
	tests/auto/gui/kernel/qwindow/BLACKLIST
	tests/auto/widgets/dialogs/qmessagebox/BLACKLIST

Change-Id: I508d686cf20f7f8cc6a7119b9bc7c3bbb505c58e
2018-02-14 12:51:24 +01:00
Tor Arne Vestbø 211791d01c Add support for Apple Unified Logging
If the OS supports it, we will now log to the Apple unified logging
system in addition to the normal stderr output. These logs can be
inspected via the Console application, or the 'log' command line
tool.

See https://developer.apple.com/documentation/os/logging

[ChangeLog][QtCore] Apple Unified Logging is now supported on Apple platforms.

Task-number: QTBUG-38156
Done-with: Jake Petroules <jake.petroules@qt.io>
Change-Id: I2ab92bd192d5b98aaf77e41501ea7b1ca6ef2425
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-02-12 23:35:13 +00:00
Tor Arne Vestbø 9b800b55c1 logging: Break out stderr logging sink into separate function
Change-Id: I4bc476376d2b84297c1798b016017db496532d27
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-02-11 03:32:25 +00:00
Tor Arne Vestbø a29e1fc708 logging: Don't build alternate logging sinks for QT_BOOTSTRAPPED
This means willLogToConsole does not need to consider the boostrapped
case anymore.

Change-Id: I088245362cd46c582a2a08225d22e4d2e4645c06
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-02-11 03:32:25 +00:00
Tor Arne Vestbø 3cee4308dc logging: Break out QMessagePattern error reporting into standalone function
Makes for a less awkward logic without any if (0) etc.

Change-Id: I3db0984c5a0bbf1615c2feb2ebef59b4ec16e9ae
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-02-11 03:32:25 +00:00
Tor Arne Vestbø 24a93798b8 logging: Use !QT_BOOTSTRAPPED instead of QT_BUILD_CORE_LIB
The former is the preferred way in Qt to exclude code that shouldn't
be built for bootstrap tools. For qlogging.cpp this includes the
bootstrap library, and qmake, both of which have QT_BOOTSTRAPPED
defined.

Change-Id: I94b669aae308786eded92b30b5e3f63add069756
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-02-10 02:49:30 +00:00
Tor Arne Vestbø ad8a3e3530 logging: Group alternate logging sink implementations
Change-Id: Iac703559658edf16c56f4c54cf71cd6188d1db4e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-02-09 19:45:46 +00:00
Tor Arne Vestbø fe5ba70e55 Prevent duplicated log output when using alternate logging sinks
3d02e75c07 was too quick, and didn't account for the fact that the
old code had early returns for each alternate logging sink, so when
removing the qt_logging_to_console() check, we would end up writing
debug output twice.

This is due to e.g. Qt Creator running the application without a
console, so qt_logging_to_console() returns false, so we end up
in e.g. the win_message_handler(), calling OutputDebugString,
but then we unconditionally print to stderr, which Creator
also reads, so we end up with duplicated log messages.

Change-Id: I91573828576608643477ae27d36d7e819f92985d
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-02-08 16:59:17 +00:00
Tor Arne Vestbø 7ec9813490 Fix inverted logic in slog2 log handler for when to disable logging
If we are logging to the console, we should _not_ log to slog2, like
the other log backends.

Change-Id: I6d16704c0f0923f54b3dc030d374af9805c2af06
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-02-08 16:59:16 +00:00
Tor Arne Vestbø 3d02e75c07 Unconditionally log to stderr, regardless of qt_logging_to_console()
Regression after 114f795221, which incorrectly assumed that checking
qt_logging_to_console() was a safe behavior change to include.

Unfortunately that broke debug output in Qt Creator, as Creator doesn't
seem to run applications with a controlling TTY unless it itself was
started with one, and doesn't set QT_LOGGING_TO_CONSOLE to force log
console output either.

Task-number: QTBUG-66153
Change-Id: I775cb06953122a3f20c16bfe21e19de2d1aa5b52
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-02-05 19:30:09 +00:00
Otto Ryynänen 6d50f746fe Support for Q_OS_ANDROID_EMBEDDED and android-embedded build flags
The Embedded Android build (Boot to Qt Android injection) is defined by
having both Q_OS_ANDROID and Q_OS_ANDROID_EMBEDDED flags defined,
as well as having Qt config android-embedded.
This commit enables the possibility to build embedded Android builds.
(i.e. Qt build for Android baselayer only, without JNI)

Change-Id: I8406e959fdf1c8d9efebbbe53f1a391fa25f336a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2018-01-20 18:16:59 +00:00
Tor Arne Vestbø ea7a9d694b logging: Factor out how to determine if a category is the default category
Change-Id: I00a94c8c3ce2c0cba5263e6fbc499794dc7ef38f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-01-16 18:02:02 +00:00
Tor Arne Vestbø d1f2208eec Fix QNX 7 build
Missing return value after 114f795221.

Task-number: QTBUG-65747
Change-Id: I8881fc70f76a163e7b1f032c7a7485ab09f852b1
Reviewed-by: Liang Qi <liang.qi@qt.io>
2018-01-14 19:54:08 +00:00
Tor Arne Vestbø 114f795221 logging: Break out alternative logging sinks into a well defined API
First steps towards a public API for having multiple output sinks is
to allow this internally.

We give all the different log sinks the same signature, with a bool
return value to signify if stderr has been handled.

The logic of not logging to the alternative sinks when the function
qt_logging_to_console() returns true has been moved into each sink,
so that they in the future may choose to log even when also logging
to the console, allowing multi-sink output. They must then make sure
to return true if the native logging sink has also logged to stderr.

The logic of each sink has been kept the same when it comes to the
formatting of the message. Some of these sinks should ideally use
the raw message instead of the formatted one, as they are structured
logging sinks.

Change-Id: I441d3bc1db3e16180704e00d13a40564b6f06a6c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-01-12 11:50:36 +00:00
Tor Arne Vestbø 84e7b64090 logging: Clarify that QT_MESSAGE_PATTERN only applies to unstructured logging
Structured sinks such as systemd should capture each piece of information
individually, not bake it into the message via the message pattern.

Change-Id: I164c043683f123764a5445dc9faad049e25fd738
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-01-12 11:50:35 +00:00
Lars Knoll db92f2f3aa Merge remote-tracking branch 'origin/5.9' into 5.10
Conflicts:
	.qmake.conf
	mkspecs/win32-g++/qmake.conf
	src/corelib/global/qglobal_p.h
	src/corelib/global/qoperatingsystemversion_p.h
	src/corelib/io/qfilesystemengine_win.cpp
	src/network/bearer/qbearerengine.cpp
	src/platformsupport/input/libinput/qlibinputpointer.cpp
	src/sql/doc/snippets/code/doc_src_sql-driver.cpp
	src/widgets/kernel/qwidget_p.h
	src/widgets/kernel/qwidgetwindow.cpp
	src/widgets/styles/qfusionstyle.cpp
	tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp

Change-Id: I80e2722f481b12fff5d967c28f89208c0e9a1dd8
2017-12-30 12:09:53 +01:00
Thiago Macieira b12db22fcf Replace a few hardcoded paths with defaults from paths.h
This removes at least one special-case we had to have, in Android's lack
of /etc/mnttab. Bionic's _PATH_MOUNTED is already /proc/mounts.

Change-Id: I9407dcf22de6407c83b5fffd14fedc638586d0f9
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-12-24 02:04:12 +00:00
Samuli Piippo 98b7ad7682 QNX: fix slog2 for QNX7
Change the include header to sys/slog2.h, which is available
in both QNX 6.6.0 and 7.

Task-number: QTBUG-64033
Change-Id: I26d8c5451376bab33e11f4784ca772f84cd6fc28
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-12-13 06:50:53 +00:00
Liang Qi ce09ef4313 Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
	src/corelib/io/qprocess_unix.cpp
	src/corelib/io/qprocess_win.cpp
	src/plugins/platforms/android/qandroidplatformintegration.h
	src/plugins/platforms/windows/qwindowscontext.cpp
	src/plugins/platforms/windows/windows.pri
	src/tools/uic/cpp/cppwriteinitialization.cpp
	src/widgets/doc/src/widgets-and-layouts/gallery.qdoc

Change-Id: I8d0834c77f350ea7540140c2c7f372814afc2d0f
2017-06-19 16:12:34 +02:00
Orgad Shaneh 9a73b7ac96 QLogging: Fix unused static function warning
Detected by clang

Change-Id: Ia7d1bf085d838d19319ee1060dcb3c0086a510e4
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2017-06-13 06:32:50 +00:00
Liang Qi d1ea481345 Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
	src/network/access/qnetworkreply.cpp
	tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp

Change-Id: Iadf766269454087e69fb216fc3857d85b0ddfaad
2017-05-07 13:08:18 +02:00
Thiago Macieira bd52bff35d Fix Clang build: it does not have __attribute__((optimize(x)))
Change-Id: I84e363d735b443cb9beefffd14b8b5f3885b84d6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-04-26 13:06:46 +00:00
Liang Qi 5d6073be27 Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
	mkspecs/linux-icc/qmake.conf
	mkspecs/macx-icc/qmake.conf
	mkspecs/win32-icc/qmake.conf
	src/gui/painting/qgrayraster.c

Change-Id: Ib08c45ea3215be05f986ecb3e1f4b37d209aa775
2017-04-07 10:24:33 +02:00
Tor Arne Vestbø fb38db29e1 Consider ENXIO (No such device or address) reason to check isatty()
Aligns with EPERM (Operation not permitted) and ENOENT (No such file
or directory), and is what errno is set to on macOS when opening the
/dev/tty device when running inside e.g. Xcode, where isatty() will
return true.

Change-Id: I09b88eaa3ff611d95ab37f0ff4df9aaaca52747d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-04-05 11:51:15 +00:00
Thiago Macieira ceb859bf03 Implement a counted QT_FATAL_WARNINGS
[ChangeLog][QtCore][Logging] If you set QT_FATAL_WARNINGS to a number
greater than 1, Qt will stop the application at that nth warning,
instead of on the first one. For compatibility reasons with previous
versions, if the variable is set to any non-empty and non-numeric value
different from 0, Qt will understand as "stop on first warning".

Change-Id: I0031aa609e714ae983c3fffd14676f1826f34600
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-03-21 18:46:46 +00:00
Paul Olav Tvete 983ffeb9ff Build fix for -no-feature-datestring
Change-Id: I09c7bc360956aef44f4137a093b6329a08a099ee
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-17 14:41:19 +00:00
Liang Qi 9bfe3ab71e Merge remote-tracking branch 'origin/5.8.0' into 5.8
Conflicts:
	doc/global/qt-cpp-defines.qdocconf
	src/plugins/platforms/android/qandroidplatformopenglcontext.h
	src/plugins/platforms/android/qandroidplatformtheme.h

Change-Id: I13d51cc66f708138ff4d667ceea7d515992e58a4
2016-12-16 09:45:16 +01:00
Liang Qi cae32bd04d Merge remote-tracking branch 'origin/5.7' into 5.8.0
Change-Id: I576187a9905802c177ae483e6c29d0f55cf7034d
2016-12-08 08:20:36 +01:00
Lars Knoll 0c8f3229de Clean up config handling of logging backends
Turn them into proper private features, and remove setting of
defines in the pri file.

Change-Id: Iafc11e93d4a9349bf15971dc1adac9a828ea03f6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2016-11-29 19:04:30 +00:00
Thiago Macieira 20526cb014 Make sure all pattern args get cleared when parsing a new pattern
The user can call qSetMessagePattern after program start, so we need to
be sure that the parsed argument data is properly cleared.

Task-number: QTBUG-57144
Change-Id: I1978c6b95bd84639a8c4fffd1487429b04725522
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2016-11-26 07:13:45 +00:00
Liang Qi 4783de0473 Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
	src/network/socket/qnativesocketengine_winrt.cpp
	tools/configure/configureapp.cpp
	tools/configure/environment.cpp

Change-Id: Ieae6f2ee004a87f041751852b687484f91ee4480
2016-11-24 10:31:21 +01:00
Liang Qi 38c1057f69 Merge remote-tracking branch 'origin/5.6' into 5.7
This also reverts commit 0d2f0164f4.

Conflicts:
	header.BSD-NEW
	qmake/Makefile.win32
	src/openglextensions/qopenglextensions.cpp
	src/openglextensions/qopenglextensions.h
	src/winmain/qtmain_win.cpp
	src/winmain/qtmain_winrt.cpp
	tools/configure/configureapp.cpp
	util/glgen/qopenglextensions.cpp.header
	util/glgen/qopenglextensions.h.header

Change-Id: If26c6f4111b342378dd88bbdc657e322d2ab6ad8
2016-11-23 09:24:36 +01:00
Kai Koehne 4b1c343e5e Doc: Add missing reference to qInfo()
Change-Id: I7438aa8ff9fddf2e0155ffe0d442f96d4d9265d4
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2016-11-18 16:19:49 +00:00
Liang Qi cdb56c42fc Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
	mkspecs/features/uikit/xcodebuild.mk
	tests/auto/other/lancelot/tst_lancelot.cpp
	tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp
	tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp

Change-Id: Ia0ae2de86094120281abd445138877c2cc3e882c
2016-09-29 00:38:01 +02:00
Liang Qi 680dd3313c Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/corelib/global/qlogging.cpp

Change-Id: I9cc8f25ad897efab6a42cb5c5161b1c9402952f0
2016-09-23 22:28:33 +02:00
Olivier Goffart 7c5cf8b2bd Fix bootstrap applications crashing when QT_MESSAGE_PATTERN contains %{backtrace}
tokens[i] was left uninitialized. This could cause a crash when moc produces a
qWarning.

Task-number: QTBUG-56045
Change-Id: I6fba933005edd29756f0d6b1cfe53243254ac7b2
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-09-21 13:22:54 +00:00
Liang Qi 7555a92581 Merge remote-tracking branch 'origin/5.7' into 5.8
5971b88e is not needed in new configure.

This merge also reverts "fix QMAKE_DEFAULT_*DIRS resolution with
apple SDK", 2c9d15d7, because it breaks iOS build with new
configure system.

Conflicts:
	mkspecs/features/default_pre.prf
	mkspecs/features/mac/toolchain.prf
	mkspecs/features/toolchain.prf
	src/dbus/qdbusconnection.cpp
	src/plugins/sqldrivers/mysql/qsql_mysql.cpp
	src/sql/drivers/mysql/qsql_mysql.cpp
	src/widgets/widgets/qmenubar.cpp
	src/widgets/widgets/qmenubar_p.h
	tools/configure/configureapp.cpp
	tools/configure/environment.cpp
	tools/configure/environment.h

Change-Id: I995533dd334211ebd25912db05b639d6f908aaec
2016-09-21 11:57:52 +02:00
Thiago Macieira 597d625c2c Disable forcing of -fomit-frame-pointer with ICC
qlogging.cpp(1226): error #3175: unrecognized gcc optimization level
  __attribute__((optimize("omit-frame-pointer")))
                          ^

Change-Id: I33dc971f005a4848bb8ffffd14748b100dcefa95
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-09-16 20:50:05 +00:00
Giuseppe D'Angelo 25d6f312ac qFatal: unify the code path for aborting via std::abort
[ChangeLog][QtCore][Important behavior changes] qFatal will now
use std::abort to terminate the application on all operating
systems. Previously, ::abort() or ::exit(1) were called, depending
on the operating system.

Change-Id: I43da912cce1db3c2229568da25000ea80060eed9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-07-25 22:18:49 +00:00
Edward Welbourne 782ebeada1 Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
	qmake/library/qmakebuiltins.cpp
	qmake/library/qmakeevaluator.cpp
	qmake/library/qmakeevaluator.h
	qmake/project.h
QMakeEvaluator:
* evaluateConditional(): one side changed return type, the other
  changed a parameter type.
* split_value_list(): one side changed a parameter adjacent to where ...
* expandVariableReferences(): ... the other killed one overload and
  changed the survivor

	src/corelib/io/qlockfile_unix.cpp
One side changed a #if condition, the other moved NETBSD's part of
what it controlled.

	src/corelib/tools/qdatetime.cpp
One side fixed a reachable Q_UNREACHABLE in toMSecsSinceEpoch(), the
other moved it from the private class to the public one, in the midst
of the "short date-time" optimization, which confused diff entirely.
One side changed a QStringLiteral to QLatin1String, the other rewrote
adjoining code.

	src/network/kernel/qauthenticator.cpp
Both rewrote a line, equivalently; kept the dev version.

	src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
	src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h
One side changed #if-ery that the other removed.

	tools/configure/configureapp.cpp
One side added a check to -target parsing; the other killed -target.

	tests/auto/testlib/selftests/expected_cmptest.lightxml
	tests/auto/testlib/selftests/expected_cmptest.teamcity
	tests/auto/testlib/selftests/expected_cmptest.txt
	tests/auto/testlib/selftests/expected_cmptest.xml
	tests/auto/testlib/selftests/expected_cmptest.xunitxml
Regenerated using generate_expected_output.py
I note that quite a few other expected_* come out changed, now.

There was no git-conflict in
	src/widgets/kernel/qformlayout.cpp
but it didn't compile; one side removed some unused methods; the other
found uses for one of them.  Put FixedColumnMatrix<>::removeRow(int)
back for its new user.

Change-Id: I8cc2a71add48c0a848e13cfc47b5a7754e8ca584
2016-07-19 20:14:40 +02:00
Anton Kudryavtsev 2788fccd29 Use QStringLiteral more judiciously
Replace it with QL1S in QStringBuilder expressions
and in overloaded functions.

Replace patterns 'QString::number() + QStringLiteral'
and 'QStringLiteral + QString::number()' with
QString::asprintf.

Saves some text size.

Change-Id: Ib39b2332264dfc3df04e77f2c101b47a1030cef4
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-07-08 06:43:02 +00:00
Liang Qi 56d6e000f7 Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
	mkspecs/wince80colibri-armv7-msvc2012/qmake.conf
	qmake/generators/win32/msvc_vcproj.cpp
	src/corelib/global/qnamespace.h
	src/corelib/global/qnamespace.qdoc
	src/corelib/io/qfsfileengine_win.cpp
	src/corelib/tools/tools.pri
	src/network/ssl/qsslconfiguration_p.h
	src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp
	src/plugins/platforms/windows/windows.pri
	src/src.pro
	src/tools/bootstrap/bootstrap.pro
	src/tools/uic/cpp/cppwriteinitialization.cpp
	src/widgets/dialogs/qfilesystemmodel.cpp
	tests/auto/testlib/selftests/expected_cmptest.teamcity
	tests/auto/testlib/selftests/expected_cmptest.txt

Change-Id: I4d2ac78f0dcc97f008186bbbc769c6fe588ab0e5
2016-05-23 21:09:46 +02:00
Thiago Macieira dc40abe925 Move out the code to extract the backtrace to another function
This will make it easier to use create backtraces in other contexts.

Change-Id: I56b838ab04d9810108fcdb7f8c2fd91255864850
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-05-13 21:42:45 +00:00
Liang Qi 990969655c Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
	config_help.txt
	configure
	src/corelib/io/qprocess_wince.cpp
	src/plugins/platforms/windows/qwindowstheme.cpp
	src/plugins/platforms/xcb/qxcbbackingstore.cpp
	tests/auto/corelib/tools/qtimezone/BLACKLIST
	tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
	tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp

Change-Id: I26644d1cb3b78412c8ff285e2a55bea1bd641c01
2016-05-12 08:33:08 +02:00
Liang Qi 23a36fd2bf Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/corelib/io/qprocess_win.cpp
	src/widgets/itemviews/qheaderview.cpp

Change-Id: I0a59ade9cd6e91f770fdf298a7d72a41e79fd761
2016-04-27 09:18:05 +02:00
Thiago Macieira 721d7d383d QMessagePattern: Fix indentation and use QVector for a large struct
struct BacktraceParams is too big (more than one pointer), so using it
with QList is inefficient. Let's use QVector instead.

Change-Id: Id75834dab9ed466e94c7ffff144572c1eb3fb0e5
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-04-23 12:33:22 +00:00
Liang Qi f285687584 Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
	examples/corelib/ipc/ipc.pro
	src/plugins/platforms/xcb/qxcbbackingstore.cpp
	tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp

Change-Id: Ia006e10ff1732fe78f90138c41f05b59b49486cf
2016-04-05 14:22:45 +02:00
Liang Qi 216f57ef86 Merge remote-tracking branch 'origin/5.6' into 5.7
Change-Id: I35ca979395620e104e50b06366d0869433a4ffc2
2016-04-04 08:59:18 +02:00
Friedemann Kleint 7fc2864dc5 QtCore: Remove Windows CE.
Remove QSysInfo::WV_CE_5/6 enumeration values, #ifdef sections for Q_OS_WINCE
and wince .pro file clauses in library, examples and tests.

Task-number: QTBUG-51673
Change-Id: Ib63463445f3a26e04d018b193e4655030002f5f9
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-03-30 11:22:47 +00:00
M. Moellney 705d29585b Fix qSetMessagePattern to have many time/backtrace parts
The previous implementation overwrote multiple 'time' parts in the
qSetMessagePattern with the last setting in the pattern line.
%{time}%{time process}%{time boot} ended up to be output as if
%{time boot}%{time boot}%{time boot} was set.

This fix keeps the arguments of each individual 'time' part.

The same holds for multiple 'backtrace' parts. The previouse
implementation overwrote multiple 'backtrace' arguments with the
arguments of the last occurrence.

This fix keeps the individual arguments for the 'process' parts.

The individual arguments are applied in qFormatLogMessage.

A new test to verify the individual 'time' arguments application
is added, too.

Task-number: QTBUG-51944
Change-Id: Ib757614a482c5f31ed0a61b550daa2eea4b907b4
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-03-25 11:03:43 +00:00
Simon Hausmann 8e2d3e3b90 Merge remote-tracking branch 'origin/5.6' into 5.7
Change-Id: I9a10e1f3c9506ec8554d8f59b6300825ac730939
2016-03-23 08:29:43 +01:00
M. Moellney c228e01e12 Docs of qSetMessagePattern missing relation to qCDebug and co.
The documentation of qSetMessagePattern was missing links to qInfo() and
the category logging siblings: qCDebug, qCInfo, qCWarning, and
qCCritical.
This patch adds the links and adds a link to QLoggingCatergory class.

Task-number: QTBUG-51943
Change-Id: I85c1a205bfcd555cb0516f8cbdd157d8f20185b4
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
2016-03-21 13:48:10 +00:00
Liang Qi 6cb8121a44 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/widgets/styles/qgtkstyle_p.cpp
	tests/auto/corelib/io/qtextstream/test/test.pro
	tests/auto/corelib/plugin/plugin.pro

Change-Id: I512bc1b36acf3933ed2b96c00f476ee3819c1f4b
2016-03-21 09:02:57 +01:00
BogDan Vatra 461ebedb98 Android: Fix compilation with NDK r11
Task-number: QTBUG-51859
Change-Id: Id8bbcc9f0503ab2742e8da7f3b5de03fd46714b2
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2016-03-17 13:29:32 +00:00
Liang Qi 50d0f57b77 Merge remote-tracking branch 'origin/5.6' into 5.7
This change partially reverts 1bfc7f68 about QT_HAS_BUILTIN define
and undef in src/corelib/tools/qsimd_p.h.

This change is also squashed with "Fall back to c++11 standard
compiler flag for host builds" which is done by Peter Seiderer.

Conflicts:
	mkspecs/features/default_post.prf
	src/3rdparty/sqlite/0001-Fixing-the-SQLite3-build-for-WEC2013-again.patch
	src/3rdparty/sqlite/sqlite3.c
	src/corelib/tools/qsimd_p.h
	src/gui/kernel/qevent.cpp
	src/gui/kernel/qwindowsysteminterface.cpp
	src/gui/kernel/qwindowsysteminterface_p.h
	src/plugins/bearer/blackberry/blackberry.pro
	src/plugins/platforms/cocoa/qcocoasystemsettings.mm
	src/plugins/platformthemes/gtk2/gtk2.pro
	src/plugins/styles/bb10style/bb10style.pro
	src/sql/drivers/sqlite2/qsql_sqlite2.cpp
	tools/configure/configureapp.cpp

Task-number: QTBUG-51644
Done-with: Peter Seiderer <ps.report@gmx.net>
Change-Id: I6100d6ace31b2e8d41a95f0b5d5ebf8f1fd88b44
2016-03-11 20:08:50 +01:00
Kai Koehne 5e800fb414 QNX: Fix logging of QtDebugMsg in slog2 backend
With the introduction of QtInfoMsg in commit ef6279fd we also changed
the mapping of Qt to slog2 levels: QtInfoMsg now ends up as SLOG2_DEBUG1,
instead of SLOG2_INFO. Anyhow, we didn't change the default buffer
verbosity level accordingly.

Task-number: QTBUG-51378
Change-Id: Ia464f9e5a31e19413902e877d4f2be0ba6d340db
Reviewed-by: Dan Cape <dcape@qnx.com>
Reviewed-by: Janne Koskinen <janne.p.koskinen@theqtcompany.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2016-03-07 14:24:02 +00:00
Liang Qi a224dfc9d1 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	tests/auto/corelib/io/qprocess/tst_qprocess.cpp

Change-Id: Ib6955eb874b516b185b45d6c38cec646fbaa95f4
2016-02-29 12:34:31 +01:00
Kai Koehne c320d5221f Win: Prevent crash in qt_message_fatal()
The source argument can be nullptr, e.g. if debug information
has been stripped out.

Task-number: QTBUG-51195
Change-Id: Ie229c82278c420200cad33c19e8c3f52ab7f12c3
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-26 08:41:39 +00:00
Jani Heikkinen f776595cc1 Updated license headers
From Qt 5.7 -> tools & applications are lisenced under GPL v3 with some
exceptions, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/

Updated license headers to use new GPL-EXCEPT header instead of LGPL21 one
(in those files which will be under GPL 3 with exceptions)

Change-Id: I42a473ddc97101492a60b9287d90979d9eb35ae1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-21 18:55:18 +00:00
Jani Heikkinen 1a88b2f768 Updated license headers
From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/

Updated license headers to use new LGPL header instead of LGPL21 one
(in those files which will be under LGPL v3)

Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-15 12:25:24 +00:00
Thiago Macieira 6f298be076 Add the QT_HAS_xxx macros for post-C++11 feature testing
And for compiler extensions. QT_HAS_BUILTIN and QT_HAS_ATTRIBUTE will
come in handy.

Change-Id: I255870833a024a36adf6ffff13ecf06624bfc1ef
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-10-16 04:02:24 +00:00
Tasuku Suzuki 26b4ec448c Support logging direct to syslog, if enabled.
[ChangeLog][QtCore][Logging] Systems with syslog may now pass -syslog to
configure to send logging output to syslog.

Change-Id: I80d58ee6e70d8deb2409fc666e7e7f2d7f52b8e1
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-08-09 04:16:38 +00:00
Thiago Macieira 6388b30e79 Fix the printing of the ms-since-boot in %{time boot}
Commit 5d366f7e was not correct. The time displayed would always be the
same (the start time of the application).

[ChangeLog][QtCore][Logging framework] Fixed a bug that would cause a
"%{time boot}" field in the logging framework's pattern to always
display the same value, instead of the time since boot.

Change-Id: I255870833a024a36adf6ffff13ecb1dca4a688ed
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-07-15 04:53:37 +00:00
Sérgio Martins 8db7bad6e1 QNX: Fix namespace Qt build
Declare __progname outside the namespace

Task-number: QTBUG-43569
Change-Id: I000c6fea2e24d9b1a3514ec5de93649baa3e33a8
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-07-08 08:29:18 +00:00
Tasuku Suzuki 73d3f1b116 Doc fix typo in QT_MESSAGE_PATTERN
Change-Id: I1850c3eb07b06a4174c0e6819074040c4d62c423
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-05-27 15:28:25 +00:00
Volker Krause 7d1ec1ae9e Reorder member variables to avoid padding.
Saves 8 byte in each case on 64bit systems, no change on 32bit systems.

Change-Id: I2a2e8786fc7914ee9ae369ba05bedfc9e5e0ca5c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-05-14 12:06:41 +00:00
Frederik Gladhorn 34b14a8472 Merge remote-tracking branch 'origin/5.4' into 5.5
Conflicts:
	examples/xml/htmlinfo/simpleexample.html
	examples/xml/rsslisting/rsslisting.cpp
	qmake/generators/win32/msbuild_objectmodel.cpp
	src/3rdparty/harfbuzz-ng/src/hb-private.hh
	src/corelib/global/qlogging.cpp
	src/corelib/io/qstorageinfo_unix.cpp
	src/corelib/thread/qwaitcondition_unix.cpp
	src/gui/kernel/qguiapplication.cpp
	src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
	src/testlib/doc/src/qt-webpages.qdoc
	tests/auto/other/qaccessibility/tst_qaccessibility.cpp

Change-Id: Ib272ff0bc30a1a5d51275eb3cd2f201dc82c11ff
2015-02-24 21:02:08 +01:00
Olivier Goffart 2be0d3088f qFormatLogMessage: optimize %{backtrace}
backtrace_symbols is very slow because it tries to find the function
name from the address. In order to do that it needs to do a linear search
over all symbols. (Because the hash table goes the other way to find the
address from the symbol name)

The code is going to skip a few frames from QtCore. Since we cannot know
how many, we take a few more than necessary.
This patch changes the additional number of frames from 15 to 7
(Usually, there are about 5 suppressed frames).

We call backtrace_symbols several times for only one frame at the time.
So we are not looking up addresses we don't need after we printed the
right number of frames.

Calling many times backtrace_symbols means we do more malloc, but that's
negligible compared to the time we save. We anyway do a lot of other
allocations because of the regexp operations and such

So this patch is then saving about 10 frames lookups which allow to print
about 6 qDebug per miliseconds instead of only 2 when using %{backtrace depth=2}

Change-Id: Ic6ece2145d53dc570c80fcb0e4455dcef6bc40cb
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-02-14 18:43:35 +00:00
Marc Mutz dee800e9e9 QLogging: use return-by-value in qt_message
This also enables NRVO in almost all callers (a macro
prevents it in one case), saving one default construction
and one (move) assignment per call.

Effects on Linux GCC 4.9 stripped release builds:
 text   -896B
 data    +-0B
 relocs  +-0

Change-Id: Id3cde01057baaa408c4cbf95d8d15eaeeeec1604
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 19:39:35 +00:00
Marc Mutz 10d3f603f0 QLogging: prevent qt_message from being inlined into each of 14 callers
Effects on Linux GCC 4.9 stripped release builds:
 text  -2024B
 data    +-0B
 relocs  +-0

Change-Id: I1a315eb0f94ade2b40be62770c6ddcfc56da9ec0
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:58:13 +00:00
Marc Mutz bcfb535e82 QLogging: avoid a needless check
QString::vasprintf() deals just fine with a nullptr format string,
so don't check manually.

The main advantage of dropping the check is that in two of three
cases, we can replace assignment with initialization, thus saving
one default ctor and one (move) assignment.

Change-Id: I08dd24111cd0b92f21ef9f1c3e352ede0f66afe0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:58:10 +00:00
Marc Mutz 4b9a0c0a7c QLogging: migrate to QString::(v)asprintf
Change-Id: I63141c258c9409b03ce23cd77b90c4e4bc3487ab
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:58:06 +00:00
Jani Heikkinen 83a5694dc2 Update copyright headers
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.

Outdated header.LGPL removed (use header.LGPL21 instead)

Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing
combination. New header.LGPL-COMM taken in the use file which were
using old header.LGPL3 (src/plugins/platforms/android/extract.cpp)

Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license
combination

Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe
Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
2015-02-11 06:49:51 +00:00
Frederik Gladhorn 51ce5b4829 Merge remote-tracking branch 'origin/5.4.1' into 5.4
Change-Id: I9d668a655b548feab43e9d4b03e2437bdff76437
2015-02-10 09:55:09 +01:00
Fatih Aşıcı 51ba25e0fc logging: Check if uClibc has backtrace support
execinfo.h is optional in uClibc. We need to check
__UCLIBC_HAS_BACKTRACE__ if uClibc is used.

Change-Id: Ie28be85b0b70472df1fc4a208581bb66ad34229e
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-09 22:58:29 +00:00
Kai Koehne 5f6bbce4be Fix memory leak in qSetMessagePattern
We were leaking memory in case setPattern was called multiple
times

Task-number: QTBUG-43893
Change-Id: Icd9c214edea064aeaeb6f92a9c62836238ccd344
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-02 10:26:42 +00:00
Raphael Kubo da Costa f99b3719f0 qlogging: Fix build on FreeBSD after 63cd16d.
pthread_getthreadid_np(3) is defined in pthread_np.h, not pthread.h.
Additionally, it was added during the FreeBSD 9 time frame, so add a
version check to use it only when we know it is present.

Change-Id: I4d716d9bfb189d10128b6d458a47045e130b51e8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-01-28 16:12:14 +00:00
Kai Koehne ef6279fd51 Add QtInfoMsg
Add an 'info' message type that can be used for messages that are neither
warnings (QtWarningMsg), nor for debugging only (QtDebugMsg). This is
useful mainly for applications that do not have to adhere to the
'do not print anything by default' paradigm that we have for
the Qt libraries itself.

[ChangeLog][QtCore][Logging] QtInfoMsg got added as a new QtMsgType.
  Use the new qInfo(), qCInfo() macros to log to it.

Change-Id: I810995d63de46c41a9a99a34d37c0d417fa87a05
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2015-01-09 13:14:05 +01:00
Thiago Macieira 63cd16d03c Add support for printing the real thread ID with QT_MESSAGE_PATTERN
%{threadid} should have been %{qthreadptr} but we forgot to make the
change for Qt 5.4. So do it now.

[ChangeLog][QtCore][Logging framework] %{threadid} now prints the real
thread ID. On Linux, OS X, iOS, FreeBSD and Windows, the value is unique
system-wide. On other systems, it will print something that may be
process-specific (the value of pthread_self(3)). To print the pointer
to QThread::current(), use %{qthreadptr}.

Change-Id: Ie383ff864a11966cf5d095b966a30ace65d34ee6
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2015-01-08 00:23:03 +01:00
Frederik Gladhorn aaff94c2df Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/tools/qbytearray.cpp
	src/gui/kernel/qplatformsystemtrayicon.cpp
	src/gui/kernel/qplatformsystemtrayicon.h
	src/plugins/platforms/xcb/xcb-plugin.pro

Change-Id: I00355d3908b678af8a61c38f9e814a63df808c79
2014-12-29 16:37:38 +01:00
Thiago Macieira 5d366f7e42 Display the QElapsedTimer reference time in %{time}
This allows the time to be synchronized between different programs, as
opposed to how long it has been since the message pattern was first
parsed...

Change-Id: If8bdfa0d997ca418a5fcae40f8c34fb77f90d2aa
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-12-20 07:38:13 +01:00
Thiago Macieira d1d3c36e87 Simplify use of __has_include in qlogging.cpp
Easier to just #define it to 0

Change-Id: Ife99fdca6564077762fa67c6d7a5becaf48655d8
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-12-20 07:36:17 +01:00
André Klitzing 87ede1fc7a Fix constant "Qt" LOG_TAG in Android
The LOG_TAG for Android can be set by QCoreApplication::applicationName
instead of a constant "Qt" tag. This will avoid that multiple apps
will use the same tag.

Also it will be easier to filter the logs for different apps instead
of "adb logcat -s Qt" for all Qt apps.

Change-Id: I422cc3adf8b526634b5daa9a1bb1b90403de5618
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-15 21:24:02 +01:00
Thiago Macieira bb07737614 Fix the %{time} printing to *not* default to the process's time
The default should be the actual time of day. Showing the process's time
is the optional case. In the future, we'll provide a way to showing the
monotonic reference time ("boot") and we should improve the detection of
actual application runtime.

Change-Id: I41936d77ab9fad2073dc0ce1c97cabe57ec39f16
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-11-21 16:47:35 +01:00
Oswald Buddenhagen 8613b64f53 Merge remote-tracking branch 'origin/5.3' into 5.4
Change-Id: I224e44a9df314b9a99d33148b6cf400fcbc9de8e
2014-10-28 18:21:45 +01:00
Volker Krause fe7c5feb0d Add missing newline in fallback debug output.
This is hit in case of a recursion in the message handler, and message
hasn't gone through qMessageFormatString at this point and thus lacks
the newline.

Change-Id: Ia098b6ccbcc1aff22a4695865f39143ba0152d9c
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2014-10-28 14:04:34 +01:00
Nico Vertriest 10800a3b4c Doc: Corrected autolink errors qtbase
Task-number: QTBUG-40362
Change-Id: I054a4713bdd83280be51697689e0c3c3409b9601
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2014-10-27 14:26:02 +01:00
Kai Koehne 5bfe794aaa Remove trailing '\n' in qFormatLogMessage output
Do not automatically add a \n to all messages formatted by
qFormatLogMessage. Some backends require a final newline,
some don't, so it's best to only append it where it's actually needed.

The returned string will be null if the pattern is empty. This allows
to differentiate between the case that the pattern just didn't apply
(empty line is printed), and the case that qSetMessagePattern(QString())
have been called (nothing is printed).

Change-Id: I17fde997a4074f58f82de6dea129948155c322d6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
2014-10-27 08:59:02 +01:00
Tor Arne Vestbø ae89aa330f logging: Fix qCleanupFuncinfo to not mangle Objective-C message names
Change-Id: I823566ba72668c611d225aa92c4d09a53cabe8fc
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-10-20 13:34:37 +02:00
Kai Koehne d78fb442d7 Logging: Disable tracking of debug source info for release builds
Tracking the file, line, function means the information has to be stored
in the binaries, enlarging the size. It also might be a surprise to some
commercial customers that their internal file & function names are
'leaked'. Therefore we enable it for debug builds only.

[ChangeLog][QtCore][Logging] File, line, function information are not
recorded anymore for logging statements in release builds. Set
QT_MESSAGELOGCONTEXT explicitly to enable recording in all configurations.

Change-Id: I454bdb42bcf5b5a8de6507f29f2a61109dca9b91
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
2014-10-01 16:06:27 +02:00
Thiago Macieira cc50651cce Update the detection of when to log to stderr
On Windows, the detection changes only by inserting the use of the
environment variable before the existing tests and removing the check on
stderr.

This commit adds logic similar to Windows's: if the application has a
controlling TTY, we'll use stderr. Otherwise, we'll use the system log.
This is technically a change in behavior: previously, we would always
use the system log, unless the environment variable told us not to.

In practice, the behavior doesn't really change: Android and BlackBerry
and systemd-spawned applications are launched with no controlling TTY,
so logging will go to their logging systems.

[ChangeLog][Important behavior changes][Logging (including qDebug and
qWarning)] Log output will now go to the system log (if support for it
was compiled into Qt) if the application has no controlling terminal or
console window. Set QT_LOGGING_TO_CONSOLE to 1 to force logging to go to
stderr.

Task-number: QTCREATORBUG-12564
Change-Id: I043c5c4f47c15f26d4f4a5cf43df466ea38cdbc7
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-09-29 17:42:25 +02:00
Matti Paaso 974c210835 Update license headers and add new license files
- Renamed LICENSE.LGPL to LICENSE.LGPLv21
- Added LICENSE.LGPLv3
- Removed LICENSE.GPL

Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
2014-09-24 12:26:19 +02:00
Frederik Gladhorn c96426f19f Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4 2014-09-24 12:04:52 +02:00
Thiago Macieira 85ad88b064 Unify the environment variables used for console logging
[ChangeLog][Important behavior changes][Logging (including qDebug and
qWarning)] Support for the deprecated environment variables
QT_NO_JOURNALD_LOG and QT_ANDROID_PLAIN_LOG has been removed. Instead,
set QT_LOGGING_TO_CONSOLE to 1 to force logging to the console (stderr).
Set that variable to 0 to force logging to the system-specific event log
(if any).

Change-Id: I4800fc061752421f67aba1bf4535d524607579d5
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-09-23 17:44:29 +02:00
Frederik Gladhorn c5a3e5edd9 Merge remote-tracking branch 'origin/5.3' into 5.4
The isAlwaysAskOption was removed in 3862171315
so manually removed code in
src/plugins/bearer/connman/qconnmanengine.cpp

Conflicts:
	src/corelib/global/qglobal.h
	src/corelib/tools/qcollator_macx.cpp
	src/corelib/tools/qstring.cpp
	src/gui/kernel/qwindow.cpp
	src/gui/kernel/qwindow_p.h
	src/gui/text/qtextengine.cpp
	src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig_p.h
	src/plugins/platforms/android/qandroidinputcontext.cpp
	src/plugins/platforms/xcb/qglxintegration.cpp
	src/plugins/platforms/xcb/qglxintegration.h
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/testlib/qtestcase.cpp
	src/testlib/qtestlog.cpp
	src/widgets/dialogs/qfiledialog.cpp
	src/widgets/kernel/qwindowcontainer.cpp
	tests/auto/corelib/tools/qcollator/tst_qcollator.cpp
	tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
	tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
	tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp

Change-Id: Ic5d4187f682257a17509f6cd28d2836c6cfe2fc8
2014-09-23 11:23:36 +02:00
Kai Koehne 0fa0608f70 Logging: Remove use of _declspec(thread)
thread-local variables are known to be broken on Windows XP if the
library is loaded dynamically. This has been fixed since Windows Vista,
but to avoid any elaborate runtime checking of the OS version we're just
removing the logic alltogether for MSVC / Windows.

Task-number: QTBUG-41008
Change-Id: I64ee95270d142294c975a5890d6e1b62a833b6ef
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-09-15 15:58:40 +02:00
Olivier Goffart 27b67c5399 Logging: use the known function when the first frame of the backtrace is unknown
Change-Id: Ia591805c82e7bf77dc7af04f1054c7daca58eb6a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-05 16:52:34 +02:00
Kai Koehne e968793e81 Add qFormatLogMessage()
Export the former qMessageFormatString() as qFormatLogMessage(). This
allows custom message handlers to format their messages just like the
default message handler, taking qSetMessagePattern() /
QT_MESSAGE_PATTERN into account.

The method should arguably not add the '\n' at the end, which a follow
up commit will fix.

Change-Id: Ib2a9cfda91473df079daf03bf3197e6ac63e013e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
2014-07-30 16:27:22 +02:00
Olivier Goffart 9f598d5ee9 Logging: support %{backtrace} in QT_MESSAGE_PATTERN
On supported platform, allow to show a backtrace by using
%{backtrace} or %{backtrace depth=N separator="|"}

[ChangeLog][QtCore][Logging] QT_MESSAGE_PATTERN can include a
backtrace using %{backtrace}

Change-Id: Ib00418c070d3bd6fe846dc04bf69fa91ba64f9cd
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-07-28 09:03:47 +02:00
Olivier Goffart b6bce68a64 Logging: fix support for %{time format} in QT_MESSAGE_PATTERN
This revert commit de1d5815c1 which
wrongly fixed a typo. There is no typo because we use startsWith
with that constant.

Also added a test because the %{time} support was added in commit
93563952d0 but the test was missing

Change-Id: Ic96e6f21f989ca3a2905ec6c89b93d2627b77b40
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-07-13 18:20:42 +02:00
Frederik Gladhorn 14a80bd4df Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/dev 2014-07-04 18:46:06 +02:00
Frederik Gladhorn 39a290af6c Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
	src/gui/accessible/qaccessiblecache_mac.mm
	src/gui/accessible/qaccessiblecache_p.h
	src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h
	src/plugins/platforms/cocoa/qcocoawindow.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/widgets/kernel/qwidget_qpa.cpp

Manually moved change in qwidget_qpa.cpp to qwidget.cpp
    (cd07830e3b)

Change-Id: Ia51f471f9b53de2f3b07d77ea89db9303ac8961d
2014-07-03 23:56:45 +02:00
Gunnar Sletta de1d5815c1 Fix typo in 'time' message pattern.
Change-Id: I3f3861a0307aad9d5bb92c0fdeb719950aa370c8
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2014-07-03 09:34:08 +02:00
David Faure 9ee27005ee qDebug: fix data race in qt_message_print
The setting of (static) messageHandler to qDefaultMessageHandler if null
was happening in multiple threads simultaneously, so it needs synchronization.

Used an atomic pointer in case qInstallMessageHandler is called from a thread,
but more importantly, initialized the static vars right away.

Improve auto test to ensure that qInstallMessageHandler(0) still sets the
default message handler.

Change-Id: I70335af38c1d28a1cdba1df8a79c6006f227422e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-07-01 20:23:31 +02:00
Frederik Gladhorn a09a8d509a Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
	mkspecs/qnx-x86-qcc/qplatformdefs.h
	src/corelib/global/qglobal.h
	src/network/socket/qnativesocketengine_winrt.cpp
	src/plugins/platforms/android/androidjniaccessibility.cpp
	src/plugins/platforms/windows/qwindowswindow.cpp

Manually adjusted:
	mkspecs/qnx-armle-v7-qcc/qplatformdefs.h
	to include 9ce697f2d5

Thanks goes to Sergio for the qnx mkspecs adjustments.

Change-Id: I53b1fd6bc5bc884e5ee2c2b84975f58171a1cb8e
2014-07-01 16:25:19 +02:00
Shawn Rutledge 93563952d0 Logging: support %{time} and %{time format} in QT_MESSAGE_PATTERN
[ChangeLog][QtCore][Logging] QT_MESSAGE_PATTERN can include a
timestamp using %{time} or %{time format}

Change-Id: I2aaa9c7a6fcb340b5ce9f1fe8a78002e5fc4e6fe
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-06-27 18:59:03 +02:00
David Faure 0e14a58a96 Doc: qInstallMessageHandler cannot return 0.
The commit 124044613d (in Nov 2011) changed
that: the first call will return the builtin message handler, not 0.

Change-Id: I535ad69639f2341f9b664a6e2e7b12802ae785e0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-06-24 18:41:25 +02:00
Kai Koehne 7cbd9cffd3 Do not try to handle OOM exceptions in logging
We duplicate quite some code here in an attempt to still print
messages, even in OOM situations. However, we've in general given up
on handling OOM exceptions gracefully in Qt: On modern systems
you hardly reach the point of not being able to allocate (smaller)
chunks in the first place, since the system will usually overcommit,
or bring the system to halt by heavy paging.

In 7cafb62538 we removed already similar logic in QDebug
class.

Change-Id: I4f84641c41c5e230a60dc0b7a5b0a13dec20f90f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-06-06 09:31:59 +02:00
Bernd Weimer d5a4732c1a Allow logging to stderr
Introduced a new environment variable "QT_LOGGING_TO_CONSOLE".
When set on QNX for instance, log output is directed to the console
instead of slog2. This can be more convenient when working on the
command line. Besides, many declarative auto tests expect that,
as well.

Marked QT_NO_JOURNALD_LOG and QT_ANDROID_PLAIN_LOG as deprecated,
to be replaced with QT_LOGGING_TO_CONSOLE.

Change-Id: I7329fa2d10d31506eff145e956eaaa45d94f8e20
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-04-24 10:15:24 +02:00
Alejandro Exojo 0ebfd0866d Use category names when logging to the journal
Use the custom field QT_CATEGORY to store the name of the QLoggingCategory used
when writing to systemd's journal. To pass custom fields sd_journal_send() is
needed, and is used in combination with #define SD_JOURNAL_SUPPRESS_LOCATION to
store the metadata that is already in the QMessageLogContext.

Change-Id: I6a120701f7012aaa46451dd3d91586a419c5f803
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2014-04-05 13:27:05 +02:00
Kai Koehne 82fd626ded Document %{if-category} in default message pattern
Commit 15ddb91b introduced %{if-category}, and changed the default
message pattern. Adapt the documentation accordingly.

Change-Id: I1d500122300c4d62171de3607553b3a5a822d4a7
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-03-15 10:44:25 +01:00
Alejandro Exojo d7eb0a632a Fix one bogus print to stderr: use toLocal8Bit()
Change-Id: I86341ccbd0251a9c858a5e1a9b7ea291d73cda01
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-03-14 22:40:07 +01:00
Alejandro Exojo 6d05f5faff Make QtCriticalMsg exit on QT_FATAL_CRITICALS
Change-Id: I92e8f9851dd074f3bcded6981f5545d1e93b549f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-03-14 18:20:21 +01:00
Frederik Gladhorn df62c31807 Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev 2014-02-11 15:12:00 +01:00
Kai Koehne 5dae375c24 Fix checking of category for printf-style qCDebug
Fixes an issue introduced in b8a38a6737. We forgot
to check for category validness, and printed qCDebug(c, ""...)
unconditionally for compilers not supporting variadic
macros.

Change-Id: I779a97dacd7ea559f0d91473aad2c29e73ea2f89
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-02-08 18:20:27 +01:00
Frederik Gladhorn a1fe728fa5 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/gui/kernel/qguiapplication.cpp
	src/plugins/platforms/android/androidjnimain.cpp
	src/plugins/platforms/android/qandroidplatformintegration.cpp
	src/plugins/platforms/android/qandroidplatformintegration.h
	src/plugins/platforms/android/qandroidplatformopenglcontext.cpp
	src/plugins/platforms/cocoa/qcocoawindow.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/sql/doc/src/sql-driver.qdoc
	src/widgets/widgets/qtoolbararealayout.cpp

Change-Id: Ifd7e58760c3cb6bd8a7d1dd32ef83b7ec190d41e
2014-02-07 13:07:25 +01:00
El Mehdi Fekari 61e1bcb4dd QLogging: Avoid infinite loop in error case
If the user code installs a message handler that uses
any API that prints logs (handled by qt_message_print)
then this will lead to an infinite loop.

This patch adds a thread local storage to check
if the message handler is done before the thread
is calling it again.

Note: This check is performed only if the compiler
supports thread_local (__declspec(thread) for MSVC).

Change-Id: I43b0460b8f39b26a18de48a5652a5e55f0b336f8
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-02-02 19:01:26 +01:00
Frederik Gladhorn 46791c08e1 Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev 2014-01-21 17:57:54 +01:00
Kai Koehne b8a38a6737 Allow printf style for qCDebug, qCWarning, qCCritical macros
Add support for using qCDebug and friends in the 'printf style' way.
This allows an almost mechanical conversion of existing qDebug, qWarning,
qCritical macros, and allows avoiding the size overhead the streaming
style incurs (mostly due to inlined QDebug code).

To handle this gracefully we require variadic macros (part of
C++11/C99). For compilers not supporting variadic macros we fall back
to checking the category in QMessageLogger.

[ChangeLog][QtCore][Logging] Allow qCDebug macros to be used in a printf
style.

Change-Id: I5a8fb135dca504e1d621bb67bf4b2a50c73d41b9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-21 14:58:03 +01:00
Robin Burchell f81de3944d Support logging direct to journald, if enabled.
Instead of merely intercepting logging output from stdout/stderr from the
journal side of started processes, this has the advantage of meaning that the
origin process name will be correct.

fprintf won't work, because if a process starts children (like e.g. a
homescreen does), then their stdout/stderr are merged into their parent, and
journal has no way of differentiating the origin.

We are also able to store information about the context of logging, which might
be useful in post-mortem cases.

[ChangeLog][Platform Specific Changes][Linux] Systems with systemd may now pass
-journald to configure to send logging output to journald. Logging will still be
sent to stderr for interactive applications (run from a tty) or with
QT_NO_JOURNALD_LOG set to a non-empty value.

Change-Id: Ib260cec1ea87390bf44f267d217d795583407d00
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-21 01:59:37 +01:00
Frederik Gladhorn 9033977d39 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/corelib/global/qglobal.h
	src/corelib/tools/qstring.cpp
	src/gui/image/image.pri
	src/gui/image/qimage.cpp
	src/plugins/platforms/cocoa/qcocoawindow.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/eglfs/qeglfshooks_stub.cpp
	tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp

Change-Id: I3b9ba029c8f2263b011f204fdf68c3231c6d4ce5
2014-01-20 18:18:59 +01:00
BogDan Vatra 8a9bd001c9 Support multiple native surfaces on Android.
Support for multiple native surfaces is needed by applications that need
to mix raster windows with GL windows.
Rework the raster and opengl implementation, get rid of eglfs and
fbconvenience dependencies.
Create a single android platform plugin.

[ChangeLog][Android] Rework the raster and opengl implementation.
[ChangeLog][Android] Create a single android platform plugin.

Task-number: QTBUG-34650

Change-Id: I9b1ab51554823329dda8cfbf8fef27c38f917c7b
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-01-17 10:23:08 +01:00
Kai Koehne 7fab8eb56b Windows: Do not print test output to both stdout and system debug log
Avoid piping the test output to both the Windows system debugger, and
stdout. This fixes duplicate output in Qt Creator, which displays messages
from both sources.

[ChangeLog][QtTestLib] The (default) plain text logger on Windows now
logs to either the system debug log (in case no console is open), or
stdout, not both.

Task-number: QTBUG-34630
Change-Id: I35fe9f4a50cc660d79fad7dffa6d19659b2102ae
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-01-13 09:44:40 +01:00
Kai Koehne 79b975756a Revert "Add tracing to logging framework"
The tracing API still misses some real-world exposure. Let's
re-do this in dev to have more time.

This reverts parts of following commits:

466e0dff4b
7a47aebe9e
a652bab6a7
8f0654ceb8
4162522edd
32f27b4367
9ff81bdc1a

Change-Id: If97340c37b8b3363f597683336a8390d5ff386f1
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2013-11-07 11:29:30 +01:00
Kai Koehne 15ddb91bc7 Print non-default categories in default message handler
Change the default output of the logging framework to prefix messages
with a 'category: ' in case the category is not "default", so that e.g.

  QLoggingCategory cat("qt.core.codes.windows");
  qCWarning(cat) << "MultiByteToWideChar: Cannot convert multibyte text";

will print

  qt.core.codes.windows: MultiByteToWideChar: Cannot convert multibyte text

while output from qWarning etc will show unaltered output. This should
help users to discover categories, and to group output together.

Change-Id: Iac2e1514f7dc5671966c36a440a119c857564cfc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
2013-10-16 17:10:15 +02:00
Kai Koehne dd2e1c58a7 Document %{category} for qSetMessagePattern
Change-Id: Ib6ad515ce4ba27d501538ba45fd65e60ce5332df
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
2013-10-15 13:13:23 +02:00
hjk 7a47aebe9e Let QLoggingCategory::defaultCategory return a pointer
The pointer can be null. Going trough the reference invokes undefined
behavior here.

Change-Id: Ia84e4e732cdcbbaee0f5f0679765d18069ea8b2d
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-10-11 19:15:29 +02:00
Kevin Ottens c657bb7b51 Make sure QLoggingCategory default is available
This avoids crashes in case where qWarning() would be called from a
global static deleted after the one holding the default category. I
encountered this case with a QLockFile locked from a global static while
the application quits, it was calling qAppName which was triggering a
qWarning as the qapplication object was gone too.

Change-Id: I8910e8559d063e8f0a737bae3da5edc481ab84d3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-10-10 09:37:33 +02:00
Paul Olav Tvete ec716cc5bf Android: Handle new QtTraceMsg in message handler
Change-Id: I3eb6fa42044ff4bdd0219925abf9d18cad60de7c
Reviewed-by: hjk <hjk121@nokiamail.com>
2013-09-27 18:31:23 +02:00
hjk 466e0dff4b Add tracing to logging framework
Change-Id: I4d5b9a24a214785019ff1238c1790ead79205b15
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2013-09-25 18:21:45 +02:00
Robin Burchell e8af66f906 Add newlines to qEmergencyOut output on stderr.
qt_message, in the regular case, calls qt_message_print, which invokes the
default message handler (qDefaultMessageHandler), which uses
qMessageFormatString to construct a string, and then platform-dependent methods
to print this out. This means that qMessageFormatString's newline is the one
that separates debug messages.

Unfortunately, in the emergency case, we don't have this luxury of doing
formatting: so just make sure to add a newline so output is readable.

Change-Id: I8f7bbceb9347b6312748f0f426feebaf04f6a226
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2013-09-24 01:04:16 +02:00
Kai Koehne 3efca77e35 Import qlogger framework
Merge most parts of the qlogger framework from

git://gitorious.org/qtplayground/qlogger.git

The categorized logging feature is a replacement for qDebug, qWarning and
friends. With logging statements in an app/library, a developer can
turn on the statements they care about and turn off the ones they don't.

Most work for this was done by Wolfgang Beck and Lincoln Ramsay.

Task-number: QTBUG-25694
Change-Id: Ib0cdfbbf3694f86ad9ec553b2ea36f09a477cded
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2013-09-20 23:45:06 +02:00
Andrew Knight d959c37eaa WinRT: Basic global support
Various global changes, primarily preprocessor flow, to support the
WinRT platform.

Change-Id: I3fa9cf91d5fb24019362e88fcf205e31b4f810b5
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2013-09-20 13:53:59 +02:00
Kai Koehne 03951bd3ff Fix name of argument in documentation
Change-Id: Ia137f75865390f4bbabd65c75ba81ac4bba93eba
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
2013-09-17 09:30:54 +02:00
Friedemann Kleint 7fb3906d4e Windows logging: Fix check for console applications.
The old code used to check for usingWinMain, which is not set when
Qt is used within a DLL. Try to check for presence of stderr
by checking for a console window or a redirected stderr-handle.

Task-number: QTBUG-32044
Change-Id: I87893c3438f5e92d73488e9c25b95cbfeaacc1f6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-09-09 17:51:11 +02:00
Eskil Abrahamsen Blomfeldt 1a4594c396 Android: Fix QString(char*) warnings in qlogging.cpp
Both context.file and context.function are already char*, so
using qPrintable() here would first convert them to QString()
with the scary constructor and then back again.

Change-Id: I822655c37fb8b9baaddc8f95d7c1842519859a0e
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-09-09 07:26:48 +02:00
Kai Koehne d806944f06 Fix code indentation and comment formatting
Change-Id: Ic94200988add19d608648c8d3bd56bbfe74bde79
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2013-06-20 15:15:45 +02:00
Stephen Kelly d9fb6e6dbb Remove use of 'register' from Qt.
It is deprecated and clang is starting to warn about it.

Patch mostly generated by clang itself, with some careful grep
and sed for the platform-specific parts.

Change-Id: I8058e6db0f1b41b33a9e8f17a712739159982450
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2013-06-17 09:44:22 +02:00
Gunnar Sletta 289120f8dd Enable qDebug to console when desired on Android.
Change-Id: I91906c5fc2a5b406f416c296c124a01795e69b8a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-04-12 01:25:37 +02:00
Oswald Buddenhagen b7155b6c07 make QtCriticalMsg fatal if QT_FATAL_WARNINGS is set
if warnings are fatal, then critical messages should be even more so.

Change-Id: I3681fa1fc606337006f1781dd961ea9cf6ce282d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-03-12 18:13:37 +01:00