For now only xcb on GLX is supported. Other platforms will follow later.
Add also some missing documentation for the platform OpenGL context factory
functions.
[ChangeLog] QOpenGLContext is now able to adopt existing native contexts.
Task-number: QTBUG-37552
Change-Id: I5dd959f102df178f646b2df5989203b5dc6de376
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
let the syncqt + qt_module_header.prf pair handle generation of
forwarding headers.
in qtbase this is ineffective to some degree, as the need to create
QtCore's forwarding headers early for QtBootstrap requires qtbase.pro
already doing the real work, but at least we get the verification that
nothing breaks.
Other Modules (TM) will need the full functionality.
Change-Id: Ifd3dfa05c4c8a91698a365160edb6dabc84e553f
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
no need to have two mechanisms for the same thing.
the values of %classnames can be comma-separated lists now, so one
header can have multiple classes assigned. conversely, if an extracted
class name reverse-maps to a different file name, it is omitted.
Change-Id: Ia0a35d64764b6376f33b77bbfe59e1df70a3cf1a
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
much more elegant than the checked in file. and less chance to get it
wrong, as people often enough do.
Change-Id: I975a62dfd83ce4f15947ce54f3c40931b1badae0
Reviewed-by: Tasuku Suzuki <stasuku@gmail.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
otherwise even non-angle builds with pre-generated headers will get them
into their include path, which is Not Good (tm).
Change-Id: Ie98354297baf3564ef82b3d4a32e5763e625b8f2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
we run syncqt on them only to get normal forwarding headers and the
headers.pri file. the module master include header and the module
version header are useless, and scanning for qt class names just wastes
time.
Change-Id: I58e8d1eb36cea5c31cbd46ce673438316d1963dc
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
this avoids that syncqt needs to forward to a yet unexisting file (which
will have a yet unknown location, when syncqt is run at packaging time
already).
the %inject_headers syncqt config variable remains, so it can be told
not to purge "foreign" files.
Change-Id: I127ff6e0b7d5702fb0acaee9a5b7940b482d3608
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
The complete set of OpenGL extensions is large meaning that any attempt
to incorporate them into a shared library such as QtGui would bloat the
size of that library.
The typical usage pattern for OpenGL extensions is to use only a very
small number of extensions from the total available set. A static
library suits this situation very well as an application will only
compile in the executable code for the extensions actually used. Thus
makign all of the functionality available to those that need it but with
zero cost to those that do not.
Change-Id: I49fdac7e9d2e0b190b7ea04b776018dd63c3065f
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
The QT_{BEGIN,END}_HEADER macros have never worked and
might be potentially removed.
Also removing the list of blacklisted files from sync.profile
Change-Id: I601969cf8eddf3908c3ad46f63af9434670d4046
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
These headers did not exist before 5.0 and should not exist in 5.0
release.
Change-Id: I9dd40cb07c468db32777a7ce45afa41e693b7839
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
we were already installing them into QtCore/private, so turn them into
proper private headers to start with. this cleans up our project files.
Change-Id: I0795f79e03b60b5854de9e4dc339e9b5a5e6fd87
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
(Currently, the Qt5 windows packages lack the tiff and mng plugins
from qtimageformats because of this issue.)
If Qt is configured to use its bundled zlib, it is compiled into
QtCore, and the public symbols are exported so that it can be used
by other Qt libraries. However, after modularization, this did not
work for libraries outside qtbase, since they did not have access
to the headers of the bundled zlib.
This commit fixes that.
Ref. also 1f461ac45b
Change-Id: Ie986f47e00fd0c16f2ba04d27f4258a20d61b260
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
The sync.profile Perl script will now generate the "QSql" header file
during compilation. By removing the \inheaderfile command, the
documentation will now display the namespace's own name as the header
(i.e. "QSql" in this case).
Previously, the only documented way to include the namespace was to
include the whole module, which is expensive. This change also makes
QSql consistent with other namespaces, such as QSsl and QAudio, which
have their own dedicated camel-case headers.
Part of the Header Consistency Project
(http://lists.qt-project.org/pipermail/development/2012-October/007421.html)
Change-Id: Ibb82d442956e767c13b82f1e552aabdf2e8ff110
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
The handling of deprecated headers in syncqt causes those
headers to end up in the <QtGui> master include when
shadowbuilding on another drive on Windows.
Task-number: QTBUG-27497
Change-Id: I9318ae670c50bc010b6bf97cd5fd003e08db84c8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Peter Kümmel <syntheticpp@gmx.net>
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
ANGLE is a component that implements the OpenGL ES 2.0 API on
top of DirectX 9. See the following for more info:
http://code.google.com/p/angleproject/
ANGLE is now the default configuration on Windows. If you
want to use desktop OpenGL, you should build Qt with the
following configure options:
-opengl desktop
To configure Qt to use another OpenGL ES 2 implementation,
you should use:
-opengl es2 -no-angle
Task-number: QTBUG-24207
Change-Id: Iefcbeaa37ed920f431729749ab8333b248fe5134
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Public QtTest headers require it, so all unit tests would have to use private Qt
headers otherwise, which is not practical.
Change-Id: I5d4466ec30b6a57ebdfc34413e716e657eb51368
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
In this change:
dba22bc036
we actually do not need the sync.profile change.
The header is already in QtGui - and it caused compiler warnings
when Qt/tests are compiled. The troubled includes are of type
<qstandarditemmodel.h> where Wigets are first in the include path.
Change-Id: Iff17f6ddb6c6282d41a08b53438b7aec786f12a9
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
These classes are not specific to QPA.
Discussed in QtCS 2012.
Change-Id: I32bc5fad4f0fa5e7095af86d61966fdf4d9e4ad7
Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
As discussed on mailing list and QtCS 2012.
Any file starting with qwindowsystem is now marked as
QPA API.
This change drops _qpa from the filenames and adds gui-private
where required for the code to compile. This change is backward
compatible otherwise and compat headers are created for
the old inclusion headers.
Change-Id: I72ea0f394dee74f46e614fcf11ab5500ac9fef2a
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
The dependencies on QFont, QBrush, QIcon are all in QtGui, so there's
little sense to still have these classes in QtWidgets.
This also copies and pastes a version of QWidgetItemData as
QStandardItemData inside qstandarditemmodel_p.h.
Change-Id: Ibafc5a30748e7ce0b54753309ae6dc4a797fc20e
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
this has the advantage that the %mastercontent assignments in sync.profile
are not necessary any more. as it happens, most modules got them wrong
anyway.
Change-Id: Ibdf689be408f18e1d90c44ef4ecacd7c24b1f1c9
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
it's module-specific.
on the way, fix it to actually support multiple files.
Change-Id: I796b0e98e38a54754022e0e2fa48cecb54d06ff4
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
The main reasons for doing this are:
1. _qpa.h end up in the master QtGui include file. QtGui is meant for
userland applications. qpa code is neither binary nor source compatible.
Inadvertant use of QPA api makes the user code binary-incompatible.
2. syncqt creates forwarding headers for non-private header files. This
gives people the impression that this is public API.
As discussed on the mailing list, even though QPA api is internal and subject
to change, it needs to treated differently from private headers since they
will be used by in-qtbase and out-of-qtbase plugins.
This commit does the following:
1. The _qpa in QPA header files is dropped.
2. syncqt now treats any file with qplatform prefix as a special file and
moves it to qpa/ directory. The recommended way of using QPA API in plugins
is: #include <qpa/qplatformfoo.h>. This allows the user include QPA API
from multiple modules (for example, qplatformfoo might be in QtPrintSupport)
3. The user needs to explicitly add QT += <module>-private to get access to
the qpa api.
4. Creates compat headers for the olden style qplatformfoo_qpa.h and QPlatformFoo
includes.
This commit does not change the cpp filenames. This requires a more careful
merging of existing non qpa cpp files and existing cpp files on a case by
case basis. This can be done at anytime.
The following files are not renamed as part of this changed but will be fixed
as part of a future change:
src/gui/kernel/qgenericpluginfactory_qpa.h
src/gui/kernel/qgenericplugin_qpa.h
src/gui/kernel/qwindowsysteminterface_qpa.h
files were renamed using
for x in `find . -name "qplatform*_qpa.h"`; do git mv $x "${x/_qpa.h/.h}"; done
for x in `find . -name "qplatform*_qpa_p.h"`; do git mv $x "${x/_qpa_p.h/_p.h}"; done
includes were renamed using script
for file in `find . -name "*.h" -or -name "*.cpp" -or -name "*.mm"`; do
sed -i -e 's,.*#.*include.*<\(Qt.*/\)\?\(QPlatform.*\)>,#include <qpa/\L\2.h>,g' \
-e 's,.*#.*include.*"\(Qt.*/\)\?\(QPlatform.*\)",#include <qpa/\L\2.h>,g' \
-e 's,.*#.*include.* "\(qplatform.*\)_qpa.h",#include <qpa/\L\1.h>,g' \
-e 's,.*#.*include.*"\(qplatform.*\)_qpa_p.h",#include <qpa/\L\1_p.h>,g' \
-e 's,.*#.*include.*<\(Qt.*/\|Qt.*/private/\|private/\)\?\(qplatform.*\)_qpa\(.*\)>,#include <qpa/\2\3>,g' \
-e 's,.*#.*include.*"\(Qt.*/\|Qt.*/private/\|private/\)\?\(qplatform.*\)_qpa\(.*\)",#include <qpa/\2\3>,g' \
$file
done
Change-Id: I04a350314a45746e3911f54b3b21ad03315afb67
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
This detects the target processor based on preprocessor #defines,
setting Q_PROCESSOR_${FAMILY} accordingly. Optional
Q_PROCESSOR_${FAMILY}_${REVISION/VARIANT} #defines are also provided,
usually dependent on how the compiler is invoked.
Currently detected families (and variants) include:
ARM (v5, v6, and v7)
X86 (i386 and x86_64, as X86_32 and X86_64 respectively)
IA-64
MIPS (I, II, III, IV, 32, 64)
Other families that currently are not detected, but Qt has (or had)
support for include:
Alpha
AVR32
Blackfin
PA-RISC
PowerPC (optional 64-bit variant)
S390 (and S390X 64-bit variant)
SH (and SH-4A)
SPARC (SPARC V9)
Detection for these is currently commented out, and can
be easily enabled later.
Change-Id: I571f245c189b9d80c7c3a5369ac595a271f37c8b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Remove the #if 0'd blocks and instead add these headers to
sync.profile's @ignore_for_include_check, as documented at
http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt#other_fields
Change-Id: I3bd6e8cb21eca139fdca10fe970eeaf2e4e77c24
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
For QtWidgets, QtPrintSupport, QtPlatformSupport, they are new in qtbase.
Change-Id: Ic192b9c805b4d3229f7c94a5bb620dabe455a16f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
The QtV8 library is going to live in the qtjsbackend module.
Change-Id: I72251316163829411dda998b9503ce6f75b3606a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Change 7f35d5849e (Refactor QMetaType
types.) introduced a source incompatibility by moving typedefs for
QVariantHash, QVariantList and QVariantMap from qvariant.h file to
qmetatype.h.
The main issue here is that syncqt script is not able to distinguish
between a forward declared typedef and definition of a typedef as they
look same in source code. So generated header files for the typedefs
were pointing wrongly to qmetatype.h which didn't have full definition
of QVariant.
Change-Id: I0268c666efd0f91d76af0ff91fb30525e3dd6223
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed-by: Kevin Simons <kevin.simons@nokia.com>
This adds Aaron's copy of V8 to src/3rdparty/v8 (as a
git submodule), and builds it as a "normal" Qt library
(without any dependencies on Qt itself).
The library can be added to a project with
QT += v8-private
V8 API headers are available as private includes, e.g.
#include <private/v8.h>
The API is private because we're exposing a third-party
API directly, and we don't want to (and cannot) make
source or binary compatibility guarantees for it.
Since we want the V8 public API headers to be private
headers in Qt, syncqt and sync.profile were extended to
understand a new configuration option, the
@allmoduleheadersprivate array, that tells syncqt whether
all the library headers should be treated as private even
though they don't follow the _p.h Qt convention.
The V8 project files, patches and autotests are copied
from the QtDeclarative repository. The next step after
this commit is to remove QtDeclarative's copy of V8 and
link with QtV8 instead.
Task-number: QTBUG-20963
Change-Id: Ib8820362cdbc8fa662a5e97db841656cf38d1b62
Reviewed-on: http://codereview.qt.nokia.com/3092
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Create a libQtPrintSupport library that contains our current
printing infrastructure. Long term this will get replaced
with a libQtPrint, as the current architecture is not
really maintainable.
Change-Id: I7362fff6786b58c5b4e9213c23eda36d15048aa2
Reviewed-on: http://codereview.qt.nokia.com/3209
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
%dependencies now has a simpler format of gitmodule => gitref instead of
using qt modules and keywords.
Change-Id: I785f30e24e0a793218e2e307bdde56067760c513
Reviewed-on: http://codereview.qt.nokia.com/1215
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
QtPlatformSupport is a static library. Platform plugins are meant to
link against this library to pull in dependencies such as fontengines
and convenience functions for finding the right GL configs. The linker
will only pull in the symbols used, so the size of the library doesn't
really matter
The module specific pris define the modules
name
version
dependencies
include paths
lib paths
additional CONFIGs and DEFINES
They are located in the modules source directory, with fwd
includes created in QtBase/mkspecs/modules build directory.
The pris use
QT_MODULE_INCLUDE_BASE
QT_MODULE_LIB_BASE
to specify the locations for includes and libs. These paths
are normally based on
QT_INSTALL_HEADERS
QT_INSTALL_LIBS
for installed modules, but overridden to the module's build
directory by syncqt for the fwd included pris.
The path of the pris must be specified in the sync.profile
for syncqt to create the fwding pris in QtBase.