Il 22/04/2014 23:12, Thiago Macieira ha scritto:
http://macieira.org/~thiago/qt-5.3/QtCore.diffQtCore.diff + void warning(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3); + void critical(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3); + + typedef const QLoggingCategory &(*CategoryFunction)(); + + void debug(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + void debug(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + void warning(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + void warning(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + void critical(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + void critical(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
diff --git a/src/corelib/io/qloggingcategory.h
b/src/corelib/io/qloggingcategory.h
index 15c0519..4aec8e6 100644
--- a/src/corelib/io/qloggingcategory.h
+++ b/src/corelib/io/qloggingcategory.h
@@ -65,6 +65,7 @@ public:
// allows usage of both factory method and variable in qCX macros
QLoggingCategory &operator()() { return *this; }
+ const QLoggingCategory &operator()() const { return *this; }
static QLoggingCategory *defaultCategory();
@@ -84,25 +85,36 @@ private:
};
#define Q_DECLARE_LOGGING_CATEGORY(name) \
- extern QLoggingCategory &name();
+ extern const QLoggingCategory &name();
// relies on QLoggingCategory(QString) being thread safe!
#define Q_LOGGING_CATEGORY(name, string) \
- QLoggingCategory &name() \
+ const QLoggingCategory &name() \
{ \
- static QLoggingCategory category(string); \
+ static const QLoggingCategory category(string); \
return category; \
}
-#define qCDebug(category) \
- for (bool enabled = category().isDebugEnabled(); Q_UNLIKELY(enabled);
enabled = false) \
- QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO,
category().categoryName()).debug()
-#define qCWarning(category) \
- for (bool enabled = category().isWarningEnabled(); enabled; enabled =
false) \
- QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO,
category().categoryName()).warning()
-#define qCCritical(category) \
- for (bool enabled = category().isCriticalEnabled(); enabled; enabled =
false) \
- QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO,
category().categoryName()).critical()
+#ifdef Q_COMPILER_VARIADIC_MACROS
+
+#define qCDebug(category, ...) \
+ for (bool qt_category_enabled = category().isDebugEnabled();
qt_category_enabled; qt_category_enabled = false) \
+ QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO,
category().categoryName()).debug(__VA_ARGS__)
+#define qCWarning(category, ...) \
+ for (bool qt_category_enabled = category().isWarningEnabled();
qt_category_enabled; qt_category_enabled = false) \
+ QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO,
category().categoryName()).warning(__VA_ARGS__)
+#define qCCritical(category, ...) \
+ for (bool qt_category_enabled = category().isCriticalEnabled();
qt_category_enabled; qt_category_enabled = false) \
+ QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO,
category().categoryName()).critical(__VA_ARGS__)
+
+#else
+
+// check for enabled category inside QMessageLogger.
+#define qCDebug qDebug
+#define qCWarning qWarning
+#define qCCritical qCritical
+
+#endif // Q_COMPILER_VARIADIC_MACROS
#if defined(QT_NO_DEBUG_OUTPUT)
# undef qCDebug
These two change combined trigger QTBUG-37283: it's now not possible to use qCDebug(cat) on a compiler w/o variadic macros, where cat is a function that returns a QLoggingCategory subclass. That's because
const QLoggingCategorySubclass &(*)()
is not a type compatible with CategoryFunction above. Perhaps the header
can be refactored?
@@ -512,6 +518,9 @@ public:
AA_SynthesizeTouchForUnhandledMouseEvents = 11,
AA_SynthesizeMouseForUnhandledTouchEvents = 12,
AA_UseHighDpiPixmaps = 13,
+ AA_ForceRasterWidgets = 14,
+ AA_UseDesktopOpenGL = 15,
+ AA_UseOpenGLES = 16,
Are the last two already used in 5.3? Thanks, -- Join us Oct 6-8 at BCC Berlin for Qt Developer Days 2014! Giuseppe D'Angelo | [email protected] | Software Engineer KDAB (UK) Ltd., a KDAB Group company Tel. UK +44-1738-450410, Sweden (HQ) +46-563-540090 KDAB - Qt Experts - Platform-independent software solutions
smime.p7s
Description: Firma crittografica S/MIME
_______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
